Oracle DBA/SQL

20230629 (2) SQL 051 : 데이터 분석 함수로 비율 출력하기(RATIO_TO_REPORT)

Nuez 2023. 6. 29. 11:51
반응형

예제. 부서번호가 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이 나오는 것을 확인 할 수 있음.