SQL
[Oracle] GROUP BY절과 HAVING절
나는 개발자
2021. 2. 16. 23:48
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; |