[SQL] HAVING 기본 개념 정리 (집계 결과에 조건 걸기)Language/SQL2026. 2. 13. 21:48
Table of Contents
반응형
1. HAVING이란 무엇인가
HAVING은 GROUP BY로 집계된 결과에 조건을 거는 문법입니다. GROUP BY는 데이터를 기준별로 묶고 HAVING은 그렇게 묶인 그룹 결과를 필터링합니다.
- WHERE → 그룹화 이전 조건
- HAVING → 그룹화 이후 조건
이 차이를 이해하는 것이 핵심입니다.
2. WHERE와 HAVING의 차이
| 구번 | 적용 시점 | 대상 |
| WHERE | GROUP BY 이전 | 개별 행(row) |
| HAVING | GROUP BY 이후 | 그룹 결과 |
예를 들어
- 특정 날짜 데이터만 보고 싶다면 → WHERE
- 총 매출이 일정 금액 이상인 카테고리만 보고 싶다면 → HAVING
3. HAVING 기본 문법
SELECT 컬럼명, 집계함수 FROM 테이블명 GROUP BY 컬럼명 HAVING 조건;
- 먼저 category 기준으로 묶고 SUM(amount) 계산 후 100억 이상인 그룹만 필터링합니다.
4. HAVING을 사용한 실습 (sales_data 기준)
4.1 총 매출이 100억 이상인 카테고리
SELECT category, SUM(amount) FROM sales_data GROUP BY category HAVING SUM(amount) >= 10000000000 ORDER BY SUM(amount) DESC;

- category를 기준으로 데이터를 묶고, 각 카테고리별 총 매출 금액을 계산한다.
4.2 날짜별 매출 합계
SELECT sales_date, SUM(amount) AS total_amount FROM sales_data GROUP BY sales_date ORDER BY sales_date;
- 하루 단위 매출 흐름을 확인할 수 있다.
4.3 상품별 총 매출
SELECT item_code, SUM(amount) AS total_amount FROM sales_data GROUP BY item_code ORDER BY total_amount DESC;
- 어떤 상품이 매출이 높은지 확인할 수 있다.
4.4 날짜 + 카테고리별 매출 (다중 GROUP BY)
SELECT sales_date, category, SUM(amount) AS total_amount FROM sales_data GROUP BY sales_date, category ORDER BY sales_date, category;
- sales_date + category 조합이 하나의 그룹이 된다.
- GROUP BY 컬럼이 늘어날수록 결과 row 수는 증가한다.
6. HAVING 사용 시 주의할 점
- 집계되지 않은 컬럼 조건은 WHERE에서 처리하는 것이 일반적입니다.
- HAVING은 그룹 결과를 필터링하기 위한 문법입니다.
- WHERE로 처리 가능한 조건을 HAVING에 넣으면 성능상 불리할 수 있습니다.
반응형
'Language > SQL' 카테고리의 다른 글
| [HackerRank] Average Population of Each Continent (MySQL) (0) | 2026.02.23 |
|---|---|
| [HackerRank] Contest Leaderboard (MySQL) (0) | 2026.02.13 |
| [HackerRank] The Report (MySQL) (0) | 2026.02.13 |
| [HackerRank] Top Earners (MySQL) (0) | 2026.02.13 |
| [SQL] GROUP BY 기본 개념 정리 (그룹 조회와 집계) (0) | 2026.02.11 |
@모모띠 :: Data Lab :: Journey From Data to Insight
Notice
HELLO WORLD
안녕하세요. 데이터로 말하는 분석가 모모입니다.
데이터를 구조화하고 분석하는 과정과 실무에 활용되는 도구 중심의 내용을 기록합니다.
Popular
New
Recommend