본문 바로가기
SQL(데이터베이스)

11. SQL GROUP BY & HAVING 개념 정리

by 아몰라코딩 2025. 3. 11.

🔹 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은 그룹화된 데이터 필터링