본문 바로가기
SQL

[Oracle] GROUP BY절과 HAVING절

by 나는 개발자 2021. 2. 16.
TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.

 

 

GROUP BY절

여러개의 값들을 제시된 기준에 맞춰서 묶어주는 구문

 

 

ex. 전체사원의 총 급여합
SELECT SUM(SALARY)
FROM EMPLOYEE;  --> 현재 조회된 전체사원들을 하나의 그룹으로 묶어서 총합을 구한 결과

ex. 각 부서별 총 급여합
SELECT DEPT_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE;

ex. 전체사원 수
SELECT COUNT(*)
FROM EMPLOYEE;

ex. 각 부서별 사원 수
SELECT DEPT_CODE, COUNT(*)
FROM EMPLOYEE
GROUP BY DEPT_CODE;

 

 

ex. 각 부서별 총 급여합을 부서별 오름차순으로 정렬해서 조회

SELECT DEPT_CODE, SUM(SALARY)

FROM EMPLOYEE

GROUP BY DEPT_CODE

ORDER BY DEPT_CODE;

 

 

 

 

HAVING절

그룹에 대한 조건을 제시하고자 할 때 사용되는 구문

주로 그룹함수를 가지고 조건을 제시한다.

 

 

 

ex. 각 부서별 평균 급여가 300만원 이상인 부서들만 조회

WHERE 절 사용 (에러발생)   HAVING 절 사용
SELECT DEPT_CODE, ROUND(AVG(SALARY))
FROM EMPLOYEE
WHERE AVG(SALARY) >= 3000000
GROUP BY DEPT_CODE;
----> SELECT DEP_CODE, ROUND(AVG(SALARY))
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING AVG(SALARY) >= 3000000;

 

 

 

 

댓글