[오라클] RANK OVER PARTITION BY
조회된 로우(행)들의 순위를 정할때 쓰는 함수
아래와 같은 테이블이 있을때 가정하고
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