기본 패턴
text
SELECT column, COUNT(*)
FROM table_name
GROUP BY column
HAVING COUNT(*) > 1;설명
GROUP BY는 여러 행을 기준 열 값에 따라 묶습니다.COUNT,SUM,AVG같은 집계 함수는 묶인 단위에 대해 계산됩니다.WHERE는 묶기 전 행을 걸러내고,HAVING은 집계가 끝난 뒤 그룹을 걸러냅니다.- 따라서 "집계 결과가 어떤 조건을 만족하는 그룹만 보기"에는
HAVING이 필요합니다.
짧은 예제
text
SELECT user_id, COUNT(*) AS post_count
FROM posts
GROUP BY user_id
HAVING COUNT(*) >= 5;빠른 정리
| 절 | 시점 |
|---|---|
WHERE | 그룹화 전 |
GROUP BY | 행 묶기 |
| 집계 함수 | 그룹별 계산 |
HAVING | 그룹화 후 필터 |
공식 참고: Aggregate Functions
주의할 점
WHERE COUNT(*) > 1처럼 집계 함수를 WHERE에 바로 쓰면 의도대로 동작하지 않습니다.
집계 이후 조건은 HAVING으로 생각하는 습관이 중요합니다.