SQL

[오라클] RANK OVER PARTITION BY

dev.mk 2017. 7. 23. 16:35
반응형

조회된 로우(행)들의 순위를 정할때 쓰는 함수

 

아래와 같은 테이블이 있을때 가정하고

 

STUDENT 테이블
(이름)     (반)      (점수)
NAME  | CLASS |  SCORE
 ----------------------------
 TTT         |  A        |      90
AAA         |  A        |      80
 BBB         |  B        |      100
 CCC        |  A        |      10
 DDD         |  B        |      40
 EEE         |  B        |      60
 FFF          |  A        |      20

 

 

select NAME, SCORE, rank() over(partition by CLASS order by SCORE desc) RANK 

from STUDENT

 

사용방법은 partition by CLASS를 쓰면 학급별로 순위를 만들고 
order by SCORE 점수의 desc로 정렬해서 순위를 매긴다
당연히 partition by 의 조건을 빼면 AB반 통합 순위가 된다.

 

결과는 아래와 같이 나온다.

 

 (이름)      (학급)      (점수)
NAME    | CLASS |  SCORE | RANK
 ------------------------------------
 TTT         |  A        |      90   |    1
 AAA         |  A        |      80   |    2
 FFF          |  A        |      20   |    3
 CCC        |  A        |      10    |   4
 BBB         |  B        |      100  |    1
 EEE         |  B        |      60    |   2
 DDD         |  B        |      40    |   3

 

출처

http://sepiroth11.tistory.com/m/entry/오라클-RANK-OVER-PARTITION-BY

반응형