홈 › SQL 중급 › 10 / 11

집계와 GROUP BY·HAVING

통계 쿼리의 기초
섹션 6진행 0 / 11

집계와 GROUP BY·HAVING: 통계 쿼리의 기초

"부서별 인원 수", "월별 매출 합계"처럼 데이터를 묶어서 요약하는 조회는 실무 SQL 에서 가장 흔한 요청입니다. 이 레슨은 GROUP BY·HAVING 의 평가 순서와 빈 그룹·빈 테이블의 동작을 정확히 짚고, 월별·요일별 집계, 구성비, 상위 N 그룹 같은 통계 리포트의 기본 패턴을 익힙니다.

1. 왜 배우는가

집계 함수(COUNT·SUM·AVG)는 중급 05 조건부 집계(SUM(CASE ...))와 중급 06 NULL 처리에서 이미 등장했지만, 두 레슨 모두 "이미 그룹이 나뉜 상태"를 전제로 개별 집계 함수의 동작을 다뤘습니다. 이 레슨은 그 앞 단계, 즉 GROUP BY 로 행을 어떻게 그룹으로 묶고 HAVING 으로 그룹을 어떻게 거르는지를 다룹니다.

집계 함수 자체보다 실무에서 더 자주 틀리는 부분은 WHERE 와 HAVING 을 헷갈리거나, SELECT 에 그룹 기준에 없는 컬럼을 섞어 쓰거나, 빈 테이블에서 GROUP BY 유무에 따라 결과 행 수가 달라진다는 사실을 놓치는 경우입니다. 이런 실수는 문법 오류로 바로 드러나기도 하지만, 오류 없이 조용히 틀린 값을 돌려주는 경우도 있어 더 위험합니다.

이 레슨은 집계 함수 6종의 기본기, WHERE·GROUP BY·HAVING 의 평가 순서, 월별·요일별 집계 같은 통계 리포트 패턴, GROUP BY 규칙이 DB 마다 얼마나 다른지를 차례로 봅니다.

참고

SUM(CASE WHEN ...) 같은 조건부 집계는 중급 05, COUNT·SUM 이 NULL 을 무시하는 동작은 중급 06 에서 다뤘습니다. 필요하면 두 레슨을 먼저 참고하세요.