SQL RANK, DENSE_RANK, ROW_NUMBER

£€€.T.$·2023년 8월 23일

RANK 함수

rank 함수는 ORDER BY를 포함한 쿼리문에서 특정 항목에 대한 순위를 구하는 함수.
이 때 특정 범위(PARTITION BY) 내에서 순위를 구할수도 있고 전체 데이터에 대한 순위를 구할 수 있다.

  • 동일한 값에 대해서는 동일한 순서를 부여 한다.
  • RANK() OVER(ORDER BY 매출액 DESC)

매출액 RANK
700 ---> 1
700 ---> 1
550 ---> 3
350 ---> 4
350 ---> 4

DENSE_RANK 함수

  • 동일한 순위에 대해서는 하나의 건수로 취급 한다.

매출액 RANK
700 ---> 1
700 ---> 1
550 ---> 2
350 ---> 3
350 ---> 3

ROW_NUMBER 함수

  • ROW_NUMBER 함수는 동일한 값이라도 고유한 순위를 부여한다.
  • 동일한 값의 순위를 정해야 할 때 오라쿨의 경우 ROWID가 적은 행이 먼저 나온다
  • 만약 동일 값에 대한 순서까지 관리하고 싶으면 ROW_NUMBER() OVER (ORDER BY SAL DESC, ENAME) 을 같이 ORDER BY 절을 이용해 추가적인 정렬기준은 정의해야한다.

매출액 RANK
700 ---> 1
700 ---> 2
550 ---> 3
350 ---> 4
350 ---> 5

profile
Be {Nice} Be {Kind}

0개의 댓글