🔹 SQL GROUP BY & HAVING 개념 정리
1. GROUP BY
GROUP BY는 동일한 값을 가지는 행들을 하나의 그룹으로 묶을 때 사용합니다.
주로 COUNT(), SUM(), AVG(), MAX(), MIN() 등의 집계 함수와 함께 사용됩니다.
✅ 기본 문법
sql
SELECT 컬럼명, 집계함수(컬럼명)
FROM 테이블명
GROUP BY 그룹화할 컬럼명;
✅ 예제 테이블: sales
id | category | amount |
1 | A | 100 |
2 | B | 200 |
3 | A | 300 |
4 | B | 400 |
5 | C | 500 |
sql
SELECT category, SUM(amount) AS total_amount
FROM sales
GROUP BY category;
결과:
category total_amount
category | total_amount |
A | 400 |
B | 600 |
C | 500 |
2. HAVING
HAVING은 GROUP BY 결과에서 특정 조건을 필터링할 때 사용합니다.
즉, WHERE은 개별 행을 필터링하지만, HAVING은 그룹화된 데이터를 필터링합니다.
✅ 기본 문법
sql
SELECT 컬럼명, 집계함수(컬럼명)
FROM 테이블명
GROUP BY 그룹화할 컬럼명
HAVING 조건;
✅ 예제 총 판매액(total_amount)이 500 이상인 카테고리만 조회
sql
SELECT category, SUM(amount) AS total_amount
FROM sales
GROUP BY category
HAVING SUM(amount) >= 500;
결과:
category | total_amount |
B | 600 |
C | 500 |
🔹 WHERE vs HAVING
구분 | WHERE | HAVING |
적용 시점 | GROUP BY 전에 개별 행을 필터링 | GROUP BY 이후 그룹화된 데이터를 필터링 |
사용 가능 조건 | 일반 조건 (=, >, <, LIKE 등) | 집계 함수 (COUNT(), SUM(), AVG() 등) 포함 가능 |
예제 | WHERE amount > 100 | HAVING SUM(amount) > 500 |
✅ WHERE과 HAVING을 함께 사용한 예제
sql
SELECT category, SUM(amount) AS total_amount
FROM sales
WHERE amount > 100 -- 개별 행 필터링
GROUP BY category
HAVING SUM(amount) > 500; -- 그룹화된 데이터 필터링
🔹 정리
- GROUP BY → 데이터를 그룹화할 때 사용
- HAVING → GROUP BY 후 특정 조건을 필터링할 때 사용
- WHERE은 개별 행 필터링, HAVING은 그룹화된 데이터 필터링
'SQL(데이터베이스)' 카테고리의 다른 글
12. DB 제2정규형(2NF) 제3정규형(3NF) (0) | 2025.03.11 |
---|---|
10. SQL JOIN의 종류(테이블 붙이기) (0) | 2025.03.10 |
9. 테이블 로우 삭제(DELETE) (0) | 2025.03.10 |
8. 테이블 로우 갱신(UPDATE) (0) | 2025.03.10 |
7. 테이블 로우 조회(WHERE)(특정로우 조회) (0) | 2025.03.10 |