WHERE vs HAVING
WHERE
와 HAVING
절은 모두 데이터를 필터링하는 데 사용되지만, 동작 시점과 대상이 다릅니다.
SQL에서 데이터를 그룹화하고 집계하는 흐름을 이해하면 두 절의 차이를 명확히 알 수 있습니다.
WHERE: 집계 이전의 행 필터링
WHERE
절은 그룹화나 집계가 이루어지기 전에 개별 행을 필터링합니다.
즉, 집계 함수와 함께 직접 사용할 수 없고, 원본 데이터에서 조건에 맞는 행만 먼저 걸러냅니다.
그룹화 전에 필터링
SELECT client_name, region, order_total FROM client_orders WHERE region = 'USA';
이 쿼리는 미국(USA
) 지역 고객의 모든 개별 주문을 반환합니다.
HAVING: 그룹화 이후의 필터링
HAVING
절은 보통 GROUP BY
와 함께 사용되며, 그룹화된 결과에 조건을 적용합니다.
집계 함수(SUM
, AVG
, COUNT
등)와 함께 동작하는 것이 일반적입니다.
집계 후 그룹 필터링
SELECT region, AVG(order_total) AS avg_order FROM client_orders GROUP BY region HAVING AVG(order_total) > 200;
이 쿼리는 지역별 평균 주문 금액을 계산한 뒤, 평균이 200
을 초과하는 지역만 반환합니다.
요약: WHERE vs HAVING
절 | 필터링 대상 | 동작 시점 | 집계 함수 사용 가능 여부 |
---|---|---|---|
WHERE | 개별 행 | 그룹화 이전 | ❌ 직접 사용 불가 |
HAVING | 그룹화된 결과 | 그룹화 이후 | ✅ 사용 가능 |
- 집계 전, 개별 행을 필터링 →
WHERE
- 집계 후, 그룹화된 결과를 필터링 →
HAVING
Quiz
0 / 1
SQL에서 집계가 적용된 후 그룹을 필터링할 때 어떤 절을 사용하나요?
집계 이후 그룹을 필터링하려면 절을 사용하세요.
WHERE
HAVING
SELECT
GROUP BY
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
코드 실행
코드 생성
DB 테이블 구조
실행 결과