DB/SQL

그거 아셨나요? - WHERE와 HAVING의 차이

뽀루피 2024. 8. 26. 12:26

WHERE와 HAVING은 둘다 조건을 달 수 있는 조건절입니다.

그렇다면 WHERE와 HAVING 둘다 아무 조건을 달 수 있는 것 아닌가 하실 수 있는데 차이가 있습니다.

 

WHERE

1. 개별 행에 대해 필터링합니다.

2. 그룹화(GROUP BY) 이전에 적용됩니다.

3. 집계 함수(SUM, MAX, COUNT 등)을 사용할 수 없습니다.

 

HAVING

1. 그룹화 이후에 적용됩니다.

2. 그룹화한 결과에 대해 필터링합니다.

3. 집계 함수를 사용할 수 있습니다.

 

HAVING절이 그룹화 이후에 필터링을 하기 때문에 그룹화 이전에 필터링되어 그룹화를 진행하는 WHERE절에 비해 덜 효율적일 수 있습니다. 그리고 HAVING절은 그룹화를 한 뒤 필터링이 되기 때문에 그룹화 이후 필터링할 수 있는 조건만 다는 것이 좋습니다.