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

윈도우 함수(WINDOW FUNCTION) 2 - 그룹 내 순위 함수

by 밍구몬 2019. 7. 4.

RANK

RANK 함수는 ORDER BY 포함한 QUERY 문에서 특정 항목(컬럼) 대한 순위를 구하는 함수.
특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 데이터에 대한 순위를 구할 있음. 동일한 값에 대해서는 동일한 순위를 부여함.

 

EX) 사원 데이터에서 급여가 높은 순서와 JOB 별로 급여가 높은 순서를 같이 출력

select job,ename,sal,
        RANK() OVER (ORDER BY sal DESC) ALL_RANK,
        RANK() OVER (PARTITION BY JOB ORDER BY sal DESC) JOB_RANK
FROM emp;

DENSE_RANK

RANK 함수와 비슷하나, 동일한 순위를 하나의 건수로 취급하는 것이 다름.

 

EX) 사원데이터에서 급여가 높은 순서대로 출력

select job,ename,sal,
        rank() over ( order by sal desc) as rank,
        dense_rank() over ( order by sal desc) as dense_rank
from emp;

ROW_NUMBER

동일한 값이라도 고유한 순위를 부여함.

만일 동일한 값에 대한 순서까지 관리하고 싶으면 ROW_NUMBER() over ( order by sal desc, ename) as dense_rank 같이 ORDER BY 절을 이용하면 된다.

 

EX) 급여가 높은 순서대로 출력

select job,ename,sal,
        rank() over ( order by sal desc) as rank,
        ROW_NUMBER() over ( order by sal desc) as dense_rank
from emp;