7.3.1 기본 사용법
- GROUP BY절이 그룹화한 값의 범위를 제한할 때 사용
- 기본문
SELECT {조회할 열}
FROM {조회할 테이블}
GROUP BY {그룹화할 열}
HAVING {출력할 그룹을 제한하는 조건식}
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
HAVING AVG(SAL) >= 2000
ORDER BY DEPTNO, JOB;
DEBTNO, JOB으로 그룹화한 후, AVG(SAL)이 2000 이상인 그룹만 출력한 결과
7.3.2 유의점
- WHERE절은 출력하는 '행'을 제한하므로, 그룹화된 데이터를 제한할 수 없다.
- AVG 등 다중행 함수로 조작된 값을 제한할 수 없다.
- WHERE절이 GROUP BY, HAVING절보다 먼저 행을 제한한다.
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
WHERE SAL <= 3000
GROUP BY DEPTNO, JOB
HAVING AVG(SAL) >= 2000
ORDER BY DEPTNO, JOB;
WHERE절이 먼저 행을 제한하여, SAL이 3000을 초과하는 값들은 그룹화 대상이 되지 못 했다. (앞의 결과와 비교)