[TIL] WHERE 절과 집계함수? 그런 거 없음

tolerance·2020년 8월 29일
3

MySQL

목록 보기
7/8
post-thumbnail

오늘은 지난 TIL에서 이야기한 것을 정리해두고자 한다.

SQL WHERE절에서는 집계함수를 쓸 수 없다.

이것은 나에게 꽤 충격이었다. GROUP BY 이후 WHERE 같은 역할을 하는 HAVING절에서는 COUNT와 같은 집계함수를 쓸 수 있었고, WHERE와 HAVING의 역할상 구분을 순서 외에 잘 하지 못했어서 당연히 WHERE에서의 집계함수 사용이 될 줄 알았다.

예를 들면 아래와 같은 쿼리가 안 먹힌다는 거다.

SELECT *
FROM employee
WHERE SUM(salary) > 2000

근데 아무리 가상이어도 위와 같은 쿼리를 써놓고 보니 애초에 말도 안 되잖아? 한 테이블의 한 컬럼 값을 모두 더한 다음 2000보다 크면 모두 출력하라고? 좀 이상하다.. 집계함수와 같은 기능을 WHERE절 즈음에 써야 할 경우, 서브쿼리를 쓰라고 전문가는 말씀하셨다.

구루비 커뮤니티에 따르면, 집계함수는 '여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수'이며, 아래와 같은 특징을 지닌다.

  • GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다.
  • HAVING절을 사용하여 집계함수를 이용한 조건 비교를 할 수 있다.
  • MIN, MAX 함수는 모든 자료형에 사용 할 수 있다.
  • 일반적으로 가장 많이 사용하는 집계함수에는 AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다.
profile
매일. 나. 배운다. 조금씩

0개의 댓글