ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RANK, DENSE_RANK 함수
    Oracle 2021. 5. 24. 15:45
    728x90
    728x90

     

    오라클에서 순위를 매기는 함수 중 RANK, DENSE_RANK 함수가 있다

    특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 전체 범위에 대한 순위를 구할 수도 있다 

    RANK 와 DENSE_RANK 의 차이점은 문법을 활용하는 방법은 똑같으나

    동일한 순위를 하나의 건수로 취급하는 건 DENSE_RANK 이다

     

    예를들어

    RANK 의 경우           : 1등, 2등, 2등, 4등

    DENSE_RANK 의 경우 : 1등, 2등, 2등, 3등

     

    DENSE_RANK 의 경우 2등이 2개이지만 하나의 건수로 취급하여 다음 등수는 3등이 된다

     

     

     

     

    함수의 사용법은 아래와 같다

    전체 범위에서 속성을 기준으로 순위를 구함
    RANK() OVER(ORDER BY 속성 DESC/ASC)

     

     

    속성1을 특정범위로 하여 속성2를 기준으로 순위를 구함
    RANK() OVER(PARTITION BY 속성1 ORDER BY 속성2 DESC/ASC)       

     

     

     

     

     

    SQLD 에 있는 간단한 예시로 문법을 살펴보자

    [예제] 사원 데이터에서 급여가 높은 순서와 JOB 별로 급여가 높은 순서를 같이 출력한다

     

     

    문법을 위의 예시에 적용시켜보면 

    급여를 기준으로 순위를 구하는데  1. 전체 범위에서    2. 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;

    위와 같이 코드를 작성할 수 있다

     

     

    728x90
    728x90
Designed by Tistory.