데이터 분석/SQL

[SQL] WHERE / HAVING 차이 정리

경 민 2025. 2. 13. 13:37
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 !)