3.5 GROUP BY, HAVING
GROUP BY : GROUP BY 뒤에 오는 칼럼의 각 값별로 데이터를 그룹핑한다. 매우 부하가 높은 연산이므로 사용 전에 WHERE을 통해 조건 필터링을 수행하는 것이 좋다.
SELECT ID, SUM(NUM) AS NUMS FROM TEST GROUP BY ID;
TEST 테이블에서 ID별로 그룹핑을 수행한 뒤 ID별 NUM의 합계를 조회.
집계함수 : GROUP BY를 통해 생성된 그룹에 대하여 통계값을 계산하는 함수. GROUP BY 없이 사용한다면 전체 행을 하나의 그룹으로 본다.
함수 | 설명 |
---|---|
COUNT | 칼럼에서 값이 존재하는 행의 개수를 반환. |
SUM | 칼럼의 합을 반환. |
AVG | 칼럼의 평균을 반환. |
MIN | 칼럼의 최솟값을 반환. |
MAX | 칼럼의 최댓값을 반환. |
HAVING : 필터링할 조건을 명시하는 구문. WHERE절과 달리 집계함수를 사용할 수 있다. 즉 GROUP BY 연산이 끝난 결과에 대한 필터링을 수행한다.
SELECT ID FROM TEST GROUP BY ID HAVING COUNT(*) = 2;
TEST 테이블에서 ID별로 그룹핑을 수행한 뒤 ID별로 개수가 2개인 ID를 조회.