[Oracle] 오라클 - AVG() OVER() / MAX() 와 MIN() / RATIO_TO_REPORT()
by mini_min[Oracle]
오라클 - AVG() OVER() / MAX() 와 MIN() / RATIO_TO_REPORT()
✔️ 분석 함수 2탄
3) AVG() OVER() 함수
-- 평균과의 차이
SELECT name, dept, sal, sal - ROUND(AVG(sal) OVER()) 평균과의 차이 FROM emp;
-- 부서별 평균 (PARTITION BY)
SELECT name, dept, sal, ROUND(AVG(sal) OVER(PARTITION BY dept)) FROM emp;
--부서별 평균 (오더바이 붙이면 누적)
-- 부서별 평균, 이지만 이전 부서와 누적해서 평균 계산
SELECT name, dept, sal, ROUND(AVG(sal) OVER(ORDER BY dept)) FROM emp;
--부서별 평균인데, 다음 부서는 이전 부서와 합쳐서 평균 계산
4) MAX() OVER()와 MIN() OVER() 함수
최대와 최소값을 구해서 파티션 별로 구분할 수 있다.
SELECT name, sal, MAX(sal) OVER() , MIN(sal) OVER() FROM emp;
SELECT name, sal, MAX(sal) OVER() - sal 최대와 차이 FROM emp;
-- 부서별 최대치 급여 구하기
SELECT name, dept, sal, MAX(sal) OVER(PARTITION BY dept) 부서최대 FROM emp;
5) RATIO_TO_REPORT() OVER() 함수
백분율 쉽게 구할 수 있는 함수. 첫번째 코드처럼 짜기 힘들 때 사용하면 좋다.
--전체 중에 몇퍼인지 계산하고 싶을 때,
SELECT dept, ROUND( COUNT(*) / SELECT COUNT(*) FROM emp *100 ) 비율
FROM emp
GROUP BY dept;
--초간단...
SELECT dept, ROUND( RATIO_TO_REPORT( COUNT(*) ) OVER() *100 ) 비율
FROM emp
GROUP BY dept;
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - DDL (테이블 생성 CREATE/가상컬럼/서브쿼리) (0) | 2022.08.10 |
---|---|
[Oracle] 오라클 - 분석 함수 나머지 (LISTAGG () WITHIN GROUP() / NTILE() OVER() 등) (0) | 2022.08.10 |
[Oracle] 오라클 - COUNT() OVER() / SUM() OVER() (0) | 2022.08.09 |
[Oracle] 오라클 - 분석 함수 (RANK/ DENSE_RANK/ROW_NUMBER) (0) | 2022.08.09 |
[Oracle] 오라클 - ROLLUP/CUBE/GROUPING + GROUP_ID (0) | 2022.08.09 |
블로그의 정보
개발자 미니민의 개발로그
mini_min