SQL 기본 및 활용
🗄️ SQLSQL 기본★★★★★거의 매회

WHERE 와 HAVING 은 거르는 시점이 다르다

WHERE 는 묶기 전에 행을 거르고, HAVING 은 묶은 뒤에 그룹을 거른다.

WHEREHAVINGGROUP BY실행 순서

왜 그런지까지

실행 순서는 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 다. 그래서 WHERE 에는 집계 함수를 쓸 수 없고, HAVING 에는 쓸 수 있다.

결과가 같아 보이는 조건이라도 시점이 다르면 숫자가 달라진다 — WHERE 로 먼저 걸러 내면 그 행은 애초에 집계에 들어가지 않고, HAVING 으로 거르면 집계는 다 한 뒤에 그룹만 버린다. SELECT 의 별칭을 WHERE 나 HAVING 에서 쓸 수 없는 것도 같은 이유다.

돌려 보기

같은 450 이라는 숫자를 WHERE 에 둘 때와 HAVING 에 둘 때 부서별 인원이 어떻게 달라지는지 본다.

헷갈리는 것

WHERE vs HAVING

WHERE 는 묶기 전 행을 거르므로 집계 함수를 쓸 수 없고, HAVING 은 묶은 뒤 그룹을 거르므로 집계 함수를 쓸 수 있다.

확인 문제

넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다