< HAVING 절 >
그룹에 대한 조건을 제시할 때 사용되는 구문(주로 그룹함수식을 가지고 조건을 제시할 때 사용)
-- 각 부서별 평균 급여 조회 (부서코드, 평균급여)
SELECT DEPT_CODE, AVG(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
ORDER BY 1;
-- 부서별 평균 급여가 300만원 이상인 부서들만 조회
SELECT DEPT_CODE, AVG(SALARY)
FROM EMPLOYEE
WHERE AVG(SALARY) >= 3000000
GROUP BY DEPT_CODE; -- 오류발생 (그룹함수 가지고 조건 제시시 WHERE 절에서 안됨)
즉, 아래와 같이 변경해야된다!!
SELECT DEPT_CODE, AVG(SALARY) -- 4
FROM EMPLOYEE -- 1
GROUP BY DEPT_CODE -- 2
HAVING AVG(SALARY) >= 3000000; --3
-- 직급별 총 급여합 (단, 직급별 급여합 1000만원 이상인 직급만을 조회) 직급코드, 급여합 조회
SELECT JOB_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY JOB_CODE
HAVING SUM(SALARY) >= 10000000;
-- 부서별 보너스를 받는 사원이 없는 부서만을 조회 부서코드, 보너스를 받는 사원의 수
SELECT DEPT_CODE, COUNT(BONUS)
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING COUNT(BONUS) = 0;