집계 함수
- 값들의 집합을 계산해서 하나의 값을 리턴하는 함수
- 열(column)끼리 연산 수행
- 주로 SELECT 구문에서만 사용
- 보통 GROUP BY절과 함께 사용
- WHERE절에 바로 집계함수 사용할 수 없음
- GROUP BY절보다 WHERE절이 먼저 수행되기 때문에 집계 함수는 WHERE절에 올 수 없다
- GROUP BY를 하고 HAVING절에 집계함수를 쓰거나 WHERE절 안에 서브쿼리를 넣어 집계함수를 사용할 수 있음
SELECT math_score
FROM scores
WHERE english_score = MIN(english_score)
SELECT math_score
FROM scores
WHERE
english_score = (SELECT MIN(english_score) FROM scores)
종류
- COUNT
- 특정 열(Column)의 행의 개수를 세는 함수
COUNT(*)
로 작성하면 테이블에 존재하는 행의 개수가 반환됨
- 특정 열에 대해서 COUNT를 수행하면 해당 열이 NULL이 아닌 행의 개수를 반환
COUNT(*)
를 제외하고 NULL값은 세지 않음
- MIN
- 선택한 column의 가장 큰 값을 리턴
- 문자 또는 문자열인 경우 사전 순으로 가장 느린 데이터를 반환
- 함수 내에 산술식 사용 가능
- MAX
- 선택한 column의 가장 작은 값을 리턴
- 문자 또는 문자열인 경우 사전 순으로 가장 앞선 데이터를 반환
- 함수 내에 산술식 사용 가능
- AVG
- 숫자형 column의 평균값을 리턴
- NULL값은 제외
- NULL값을 포함해서 평균을 구하려면 SUM으로 총합을 구하고 COUNT(*)로 나눠야 함
- 아니면 NULL을 0으로 지정하는 작업을 한 뒤 AVG 사용
- SUM
- 숫자형 column의 총합을 리턴
- NULL값은 제외
GROUP BY
- GROUP BY 키워드를 이용하면 테이블의 일부 행을 대상으로 집계 함수를 사용할 수 있음
- GROUP BY 없으면 테이블의 모든 행에 대해서 계산
HAVING
- GROUP BY와 함께 쓰이는 조건문
- WHERE에서는 집계 함수를 사용할 수 없는 반면 HAVING은 집계 함수와 함께 사용 가능하다는 장점이 있음