본문 바로가기
SQLD/SQL 기본 및 활용

윈도우 함수(WINDOW FUNCTION) 5 - 그룹 내 비율 함수

by 밍구몬 2019. 7. 4.

RATIO_TO_REPORT

파티션 내 전체 sum값에 대한 행별 컬럼 값의 백분율을 소수로 구할 수 있음.

개발 RATIO의 합을 구하면 1이 됨.

 

EX) JOB별 salary를 %로 출력(ex. 10%) 

SELECT JOB, ENAME, sal, ROUND(RATIO_TO_REPORT(SAL) OVER(PARTITION BY JOB),2 )*100 || '%' as ratio
FROM EMP;

PERCENT_RANK

파티션별 윈도우에서 제일 먼저 나오는 것을 0, 제일 나중에 나오는 것을 1로 하여, 값이 아닌 행의 순서별 백분율을 구하는 윈도우 함수

 

EX) 같은 부서 소속 사원들의 집합에서 본인의 급여가 순서상 몇 번째 위치에 있는 출력

SELECT JOB, ENAME, SAL, ROUND(PERCENT_RANK() OVER (PARTITION BY JOB ORDER BY SAL),2) AS PERCENT_RANK
FROM EMP;

CUME_DIST

파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구함

 

EX1) 같은 부서 소속 사원들의 집합에서 본인의 급여가 누적 순서상 몇 번째 위치쯤에 있는지 출력

SELECT JOB, ENAME, SAL, ROUND(CUME_DIST() OVER (PARTITION BY JOB ORDER BY SAL),2) AS COME_DIST
FROM EMP;

NTILE

파티션별 전체 건수를 아규먼트 값으로 N 등분한 결과를 구하는 함수

 

EX1) 전체 사원을 급여가 높은 순서로 정렬하고, 급여를 기준으로 4개의 그룹으로 분류

SELECT DEPTNO, ENAME, SAL, NTILE(4) OVER (ORDER BY SAL DESC) AS NTILE
FROM EMP;