Checklist
GROUP BY 흔한 실수
집계 쿼리 오류는 대부분 COUNT 의미, SELECT 규칙, WHERE/HAVING 위치, 정렬 보장 착각에서 나옵니다.
오류/비결정
성능/순서
NULL 구분
실수
왜 문제인가
바로잡기
COUNT 착각
COUNT(*)와 COUNT(col)의 NULL 포함 기준이 다름
행 수인지 값 수인지 먼저 정한다.
SELECT 규칙
그룹 키가 아닌 컬럼은 대표값이 결정되지 않음
SELECT에는 그룹 키나 집계식만 둔다.
HAVING 남용
행 필터를 그룹 뒤로 미뤄 비용이 커짐
행 조건은 WHERE, 그룹 조건은 HAVING.
ORDER BY 누락
GROUP BY 결과 순서는 보장되지 않음
정렬이 필요하면 ORDER BY를 쓴다.
NULL 그룹
NULL 값끼리 하나의 그룹으로 묶임
미분류 그룹인지 의도적으로 확인한다.
ROLLUP NULL
데이터 NULL과 소계 NULL이 겹쳐 보임
GROUPING 함수로 소계 행을 구분한다.