Oracle Database - GROUP BY,HAVING
https://kwanghyung.tistory.com/entry/Oracle-Database-%EC%A7%91%EA%B3%84%ED%95%A8%EC%88%98
Oracle Database - 집계함수
https://kwanghyung.tistory.com/entry/Oracle-Database-%ED%98%95%EB%B3%80%ED%99%98-%ED%95%A8%EC%88%98 Oracle Database -형변환 함수 https://kwanghyung.tistory.com/entry/Oracle-Database-%EC%88%AB%EC%9E%..
kwanghyung.tistory.com
<GROUP BY절>
그룹을 묶어서 기준을 제시할 수 있는 구문입니다. -> 그룹함수와 같이 쓰입니다.( COUNT,MIN,MAX등등)
해당 제시된 기준별로 그룹을 묶을 수 있습니다.
여러개의 값들을 하나의 그룹으로 묶어서 처리할 목적으로 사용됩니다.
[표현법]
GROUP BY 묶어줄 기준컬럼
각 부서별로 총 급여의 합계
SELECT DEPT_CODE,SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE;
각 부서별 사원수
SELECT DEPT_CODE, COUNT(*)
FROM EMPLOYEE
GROUP BY DEPT_CODE;
각 부서별 총 급여함을 조회
SELECT DEPT_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
ORDER BY SUM(SALARY);
여기서 중요한것은 그룹함수와 같이 사용할때, 그룹함수를 제외한 컬럼을 GROUP BY로 묶어주어야 합니다.
<HAVING절>
그룹에 대한 조건을 제시하고자 할 때 사용되는 구문입니다.
(주로 그룹함수를 가지고 조건 제시)-> GROUP BY 절과 함께 쓰입니다.
-> HAVING절은 WHERE절 처럼 조건을 걸고 싶지만 GROUP BY를 사용 하였을때 사용합니다.
각 부서 별 보너스를 받는 사원이 없는 부서만을 조회
SELECT DEPT_CODE, COUNT(BONUS)
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING COUNT(BONUS)=0;
각 부서 별 평균 급여가 350만원 이하인 부서만을 조회
SELECT DEPT_CODE, FLOOR(AVG(SALARY))
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING FLOOR(AVG(SALARY))<=3500000;
'DB-디비는 즐겁다' 카테고리의 다른 글
Oracle Database- JOIN (0) | 2022.06.25 |
---|---|
Oracle Database - 집합연산자 (0) | 2022.06.24 |
Oracle Database - 집계함수 (1) | 2022.06.22 |
Oracle Database -형변환 함수 (0) | 2022.06.21 |
Oracle Database - 숫자와 날짜 함수 (0) | 2022.06.20 |
댓글
이 글 공유하기
다른 글
-
Oracle Database- JOIN
Oracle Database- JOIN
2022.06.25 -
Oracle Database - 집합연산자
Oracle Database - 집합연산자
2022.06.24 -
Oracle Database - 집계함수
Oracle Database - 집계함수
2022.06.22 -
Oracle Database -형변환 함수
Oracle Database -형변환 함수
2022.06.21