| WHERE | HAVING |
| 아싸리 처음부터 조건에 해당하는 행만 테이블링 |
그룹화한 후 조건에 해당하는 행만 필터링 |
| WHERE 조건 | GROUP BY 칼럼명 HAVING 조건 |
| 집계함수 사용 불가 | 집계함수 사용 가능 |
🔶 예시
test_table

Q. LANGUAGE 열 기준 그룹화된 데이터에서 최고 가격이 10000원 이상인 행의 LANGUAGE와 가격 합계 구하기
SELECT LANGUAGE, SUM(PRICE)
FROM test_table
GROUP BY 1
HAVING MAX(PRICE) >=10000
LANGUAGE별로 그룹화하면 (KOREAN, HINDI, AMERICAN) 3가지가 나옴
→ 최고 가격이 10000원 이상인 (KOREAN, AMERICAN) 만 추출

🔶 궁금한 점
여기서 HAVING 대신 WHERE 절로 바꿔도 되지 않을까?
답 : 안 됨.
이유 : WHERE 에는 집계함수 쓸 수 없기 때문에
결론 : 집계함수에 조건을 주고 싶으면(= 그룹화된 칼럼에 조건을 주고 싶으면) GROUP BY 데이터에 조건을 주는 HAVING 사용하기
🔻Q1에 대한 예시
- WHERE 사용 (ERROR)

- HAVING 사용 (GREAT !)

'데이터 분석 > SQL' 카테고리의 다른 글
| [day2] SQL - 상위 n개 데이터 구하기 'Limit' (0) | 2025.02.18 |
|---|---|
| [달리기반 SQL] 6번 문제 (0) | 2025.02.13 |
| [달리기반 SQL] 4번 문제 (0) | 2025.02.12 |
| [걷기반 SQL] 마지막 연습 문제 톺아보기 (0) | 2025.02.12 |
| [엑셀보다 빠른 SQL] 5-5 Window 함수 (이거 다시 풀어봐야 함) (0) | 2025.02.11 |