본문 바로가기
개발농장/DataBase

[오라클sql] 윈도우함수_순위함수 | RANK(), DENSE_RANK(), ROW_NUMBER에 대해 알아보자!

by 176의장 2023. 2. 17.
반응형

윈도우함수_순위함수

1) RANK

2) DENSE_RANK

3) ROW_NUMBER


1) RANK

  • 순위가 같으면 같은 수 만큼 다음 순위를 건너뛴다.
SELECT STUDENT_ID
     , STUDENT_NAME
     , SUBJECT
     , SCORE
     , RANK()OVER(ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;

컬럼에 정렬을 지정할 시 해당 컬럼 값에 NULL값이 있는 경우 NULL(무한의값)은 최대값으로 인식한다.

 

SELECT STUDENT_ID
     , STUDENT_NAME
     , CLASS
     , SUBJECT
     , SCORE
     , RANK()OVER(PARTITION BY CLASS ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;

CLASS별 점수를 내림차순한 순위를 구했다.


 

2) DENSE_RANK

  • 순위가 여러개가 같아도 바로 다움 순위의 값을 보여준다.
SELECT STUDENT_ID
     , STUDENT_NAME
     , SUBJECT
     , SCORE
     , DENSE_RANK()OVER(ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;

 

SELECT STUDENT_ID
     , STUDENT_NAME
     , CLASS
     , SUBJECT
     , SCORE
     , DENSE_RANK()OVER(PARTITION BY CLASS ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;


 

3) ROW_NUMBER

  • 같은 순위없이 차례대로 순위를 나열한다.
SELECT STUDENT_ID
     , STUDENT_NAME
     , SUBJECT
     , SCORE
     , ROW_NUMBER()OVER(ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;

 

SELECT STUDENT_ID
     , STUDENT_NAME
     , CLASS
     , SUBJECT
     , SCORE
     , ROW_NUMBER()OVER(PARTITION BY CLASS ORDER BY SCORE DESC) AS RANK
  FROM SCHOOL
;

 

윈도우함수 중 순위함수에 대해 알아보았다.
세개의 함수 명칭이 달라서 헷갈릴 일은 없겠지만 
한 동안 쓰지 않으면 헷갈릴 수 있으니 복습차 포스팅해본다:)
혹시나 테이블/데이터 생성이 힘든사람을 위해 별거 아니지만
sql문을 첨부파일로 올려놓겠다.
윈도우함수_순위함수.sql
0.00MB

 

반응형

댓글