SQL 기본 및 활용

GROUP BY · HAVING — SQLD, WHERE와 HAVING을 가르는 기준

CBT 전자문제집 편집팀
#SQLD#GROUPBY#HAVING#집계함수#WHERE

GROUP BY는 행을 그룹으로 묶어 그룹마다 집계함수를 적용하고, HAVING은 그렇게 만들어진 그룹에 조건을 겁니다. 시험은 딱 하나를 집요하게 묻습니다 — "이 조건, WHERE인가 HAVING인가?"

이 단원, 시험에서 어디에 나오나 (출제 비중)

  • 제2과목 「SQL 기본 및 활용」 = 40문항 · 80점. GROUP BY·HAVING은 집계 SQL의 실행결과 예측 문제로 꾸준히 나옵니다.
  • 특히 WHERE vs HAVING 구분"이 SQL은 오류인가?" 유형이 단골입니다. (단원별 문항수는 공개되지 않습니다 — 출처: KDATA 출제기준.)

출제 포인트 — 시험이 실제로 묻는 것

  1. WHERE = 행 필터(그룹 전), HAVING = 그룹 필터(집계 후) (최다 출제)
  2. 집계함수는 WHERE에 못 쓰고 HAVING에 쓴다
  3. SELECT의 일반 컬럼이 GROUP BY에 없으면 오류
  4. 집계함수는 NULL을 무시하고 계산한다 (함수 단원과 연계)

① 실행 순서 속 위치 — WHERE는 그룹 전, HAVING은 그룹 후

WHERE는 그룹을 만들기 전에 개별 행을 거르고, GROUP BY로 그룹을 만든 뒤 HAVING이 집계된 그룹을 거른다는 흐름 도식

그림 1. WHERE(집계 전)와 HAVING(집계 후)이 작동하는 위치. (자작 도식)

SELECT 부서, COUNT(*) AS 인원, AVG(급여) AS 평균
FROM   사원
WHERE  입사일 >= '2020-01-01'   -- ① 그룹 전, 개별 행 필터
GROUP BY 부서                    -- ② 부서로 그룹화
HAVING AVG(급여) >= 5000         -- ③ 그룹 후, 집계값 조건
ORDER BY 평균 DESC;              -- ④ 정렬
WHEREHAVING
대상개별 행그룹(집계값)
시점GROUP BY GROUP BY
집계함수✗ 불가✓ 가능

② 구체 예시 — 그룹을 만들고, 집계값으로 거른다

주문 표를 부서로 GROUP BY 하여 SUM하면 영업 800·인사 200·개발 900이 되고, HAVING SUM 500 이상 조건으로 인사 200이 탈락하는 예시 표

그림 2. 부서별 SUM 집계 후 HAVING으로 그룹을 거른다(인사 탈락). (자작 도식)

HAVING SUM(금액) >= 500행이 아니라 "부서별 합계"라는 집계값을 봅니다. 개별 행 금액 500이 아니라 그룹 합계 500이 기준입니다.

③ 함정 — 집계 조건을 WHERE에 쓰면 오류

WHERE AVG(급여) >= 5000    -- ✘ 오류: WHERE는 그룹 생성 전이라 집계값이 없다
HAVING AVG(급여) >= 5000   -- ✔ 집계 조건은 HAVING

판별법: 조건에 집계함수(SUM·AVG·COUNT…)가 들어가면 무조건 HAVING, 개별 컬럼 값이면 WHERE.

반대로 행 조건을 HAVING에 쓰는 것도 함정입니다. "2020년 이후 입사자만 집계"는 그룹을 만들기 전에 걸러야 하므로 WHERE가 맞습니다. HAVING으로 하면 전부 그룹핑한 뒤 거르게 되어 비효율입니다.

④ 함정 — SELECT 컬럼과 GROUP BY의 관계

SELECT 부서, 이름, COUNT(*)   -- ✘ 오류: '이름'이 GROUP BY에 없음
FROM   사원
GROUP BY 부서;

그룹당 결과는 한 행인데, 그룹에 없는 일반 컬럼(이름)은 어느 행의 값인지 정할 수 없어 오류입니다. SELECT의 집계함수가 아닌 컬럼은 반드시 GROUP BY 있어야 합니다.

한 장 정리 (암기 카드)

  • WHERE = 행(집계 전) · HAVING = 그룹(집계 후, 집계함수 가능).
  • 조건에 집계함수가 보이면 HAVING, 아니면 WHERE.
  • SELECT 일반 컬럼 = GROUP BY 필수.
  • 행 조건은 WHERE로 미리 걸러야 효율↑.

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글