반응형
예제. 부서번호가 20번인 사원들의 사원번호, 이름, 월급, 월급에 대한 비율을 출력하시오.
SELECT empno, ename, sal,
round(ratio_to_report(sal) OVER (),3) AS 비율,
round(sal/SUM(sal) OVER (),3) AS 비교비율
FROM emp
WHERE deptno =20;
비교비율 : sal/SUM(sal) OVER () 전체 월급의 누적 합에서 해당 행의 sal을 나눈 값
비율 : ratio_to_report(sal) OVER () 전체 sal 대비 해당 행 비율 값
의미상으로 동일, 출력되는 값도 동일
문제 256. 위의 SQL에서 비율, 비교 비율 데이터의 합이 1인지 확인하시오.
SELECT SUM (비율), SUM(비교비율)
FROM(SELECT ratio_to_report(sal) OVER () AS 비율,
sal/SUM(sal) OVER () AS 비교비율
FROM emp
WHERE deptno =20);
비율이기 때문에 행별 비율 값을 합산하면 1이 나오는 것을 확인 할 수 있음.
'Oracle DBA > SQL' 카테고리의 다른 글
053 : 데이터 분석 함수로 집계 결과 출력하기 2(CUBE) (0) | 2023.06.29 |
---|---|
052 : 데이터 분석 함수로 집계 결과 출력하기 1(ROLLUP) (0) | 2023.06.29 |
20230629 (1) SQL 050 : 데이터 분석 함수로 누적 데이터 출력하기(SUM OVER) (0) | 2023.06.29 |
20230628 (7) SQL 049 : COLUMN을 ROW 로 출력하기(UNPIVOT) (0) | 2023.06.28 |
20230628 (6) SQL 048 ROW 를 COLUMN 으로 출력하기 2(PIVOT) (0) | 2023.06.28 |