- 통계(합계, 평균, 최대, 최소, 개수 등)를 낼 때 사용
- NULL값을 연산에서 제외
- 종류
SUM(칼럼)
칼럼 합계
AVG(칼럼)
칼럼 평균
MAX(칼럼)
칼럼 최대값
MIN(칼럼)
칼럼 최소값
COUNT(칼럼)
칼럼에 입력된 데이터의 개수
각 칼럼(KOR, ENG, MATH)의 합계
SELECT
SUM(KOR) -- 국어 합계
, SUM(ENG) -- 영어 합계
, SUM(MATH) -- 수학 합계
, SUM(KOR) + SUM(ENG) + SUM(MATH)
FROM
SAMPLE;
SUM(KOR, ENG, MATH)은 인수(arguments)가 3개이므로 불가능하다. (인수 1개여야 한다.)
SUM(KOR + ENG + MATH)은 KOR + ENG + MATH와 같은 연산 (SUM 함수를 잘못 사용한 예시)
각 칼럼(KOR, ENG, MATH)의 평균
SELECT
AVG(KOR) -- NULL 제외한 KOR의 평균
, AVG(ENG) -- NULL 제외한 ENG의 평균
, AVG(MATH) -- NULL 제외한 MATH의 평균
FROM
SAMPLE;
NULL값은 결시를 의미하므로 0점 처리함
SELECT
AVG(NVL(KOR, 0))
, AVG(NVL(ENG, 0))
, AVG(NVL(MATH, 0))
FROM
SAMPLE;
각 칼럼(KOR, ENG, MATH)의 최대값
SELECT
MAX(KOR)
, MAX(ENG)
, MAX(MATH)
FROM
SAMPLE;
각 칼럼(KOR, ENG, MATH)의 최소값
- NULL값은 결시를 의미하므로 0점 처리함
SELECT
MIN(NVL(KOR, 0))
, MIN(NVL(ENG, 0))
, MIN(NVL(MATH, 0))
FROM
SAMPLE;
국어 시험을 응시한 학생이 몇 명인가?
SELECT
COUNT(KOR)
FROM
SAMPLE;
전체 학생은 몇 명인가? (전체 Row의 개수)
- 특정 칼럼을 지정하지 않고 전체 칼럼(*)을 이용해서 전체 Row 개수를 구함
SELECT
COUNT(*)
FROM
SAMPLE;
Q1 아래와 같이 나타내는 쿼리문을 작성하시오.
성명 국어 영어 수학 합계 평균
아무개 100 100 100 300 100
영숙 0 100 100 200 66.67
정수 100 0 100 200 66.67
지영 100 100 0 200 66.67
SELECT NVL(NAME, '아무개') AS 성명
, NVL(KOR, 0) AS 국어
, NVL(ENG, 0) AS 영어
, NVL(MATH, 0) AS 수학
, NVL(KOR, 0) + NVL(ENG, 0) + NVL(MATH, 0) AS 합계
, (NVL(KOR, 0) + NVL(ENG, 0) + NVL(MATH, 0)) / 3 AS 평균
FROM
SAMPLE;