WHERE와 HAVING은 둘다 조건을 달 수 있는 조건절입니다.
그렇다면 WHERE와 HAVING 둘다 아무 조건을 달 수 있는 것 아닌가 하실 수 있는데 차이가 있습니다.
WHERE
1. 개별 행에 대해 필터링합니다.
2. 그룹화(GROUP BY) 이전에 적용됩니다.
3. 집계 함수(SUM, MAX, COUNT 등)을 사용할 수 없습니다.
HAVING
1. 그룹화 이후에 적용됩니다.
2. 그룹화한 결과에 대해 필터링합니다.
3. 집계 함수를 사용할 수 있습니다.
HAVING절이 그룹화 이후에 필터링을 하기 때문에 그룹화 이전에 필터링되어 그룹화를 진행하는 WHERE절에 비해 덜 효율적일 수 있습니다. 그리고 HAVING절은 그룹화를 한 뒤 필터링이 되기 때문에 그룹화 이후 필터링할 수 있는 조건만 다는 것이 좋습니다.
'DB > SQL' 카테고리의 다른 글
SQL) 재귀 CTE (0) | 2025.03.05 |
---|---|
MySQL 문법 정리 (0) | 2024.08.30 |
프로그래머스 SQL (SELECT 문제) 서울에 위치한 식당 목록 출력하기 (0) | 2024.08.13 |