Database/Oracle

오라클 RANK() vs DENSE_RANK() vs ROW_NUMBER()

xProgrammer 2018. 3. 27. 10:31

스키마

http://xprogrammer.tistory.com/333


쿼리

SELECT deptno, empno, ename, sal, 
     RANK() OVER -- 순위를 부여한다.중복된 값이 있을 경우 다음 순서로
     (
       PARTITION BY deptno -- 분석함수로 계산될 대상의 그룹을 지정
       ORDER BY sal desc -- 파티션 안에서의 순서를 지정
     ) as rank1,
     DENSE_RANK() OVER -- 순위를 부여한다.중복된 순위를 무시하고 순서대로 부여
     (
       PARTITION BY deptno -- 분석함수로 계산될 대상의 그룹을 지정
       ORDER BY sal desc -- 파티션 안에서의 순서를 지정
     ) as rank2,
     ROW_NUMBER() OVER -- 순위를 부여한다.중복된 순위 없이 유일한 값으로
     (
       PARTITION BY deptno -- 분석함수로 계산될 대상의 그룹을 지정
       ORDER BY sal desc -- 파티션 안에서의 순서를 지정
     ) as rank3
FROM emp; 


결과