오늘은 지난 TIL에서 이야기한 것을 정리해두고자 한다.
SQL WHERE절에서는 집계함수를 쓸 수 없다.
이것은 나에게 꽤 충격이었다. GROUP BY 이후 WHERE 같은 역할을 하는 HAVING절에서는 COUNT와 같은 집계함수를 쓸 수 있었고, WHERE와 HAVING의 역할상 구분을 순서 외에 잘 하지 못했어서 당연히 WHERE에서의 집계함수 사용이 될 줄 알았다.
예를 들면 아래와 같은 쿼리가 안 먹힌다는 거다.
SELECT *
FROM employee
WHERE SUM(salary) > 2000
근데 아무리 가상이어도 위와 같은 쿼리를 써놓고 보니 애초에 말도 안 되잖아? 한 테이블의 한 컬럼 값을 모두 더한 다음 2000보다 크면 모두 출력하라고? 좀 이상하다.. 집계함수와 같은 기능을 WHERE절 즈음에 써야 할 경우, 서브쿼리를 쓰라고 전문가는 말씀하셨다.
구루비 커뮤니티에 따르면, 집계함수는 '여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수'이며, 아래와 같은 특징을 지닌다.