초보프로그래머만..

[오라클] RANK OVER PARTITION BY

세피롯스 2011. 11. 8. 11:15



순위메길때 사용할수 있는 오라클 함수

이런 테이블 정보가 있다고 가정하고....

T_STUDENT 테이블
(유저ID)      (학급)      (점수)
USERID    | CLASS |  POINT
----------------------------
TTT         |  A        |      90
AAA         |  A        |      80
BBB         |  B        |      100
CCC        |  A        |      10
DDD         |  B        |      40
EEE         |  B        |      60
FFF          |  A        |      20


select USERID,CLASS, POINT, RANK() OVER(PARTITION BY CLASS ORDER BY POINT DESC) RANK  FROM T_STUDENT

사용방법은 PARTITION BY CLASS를 쓰면 학급별로 순위를 만들고
ORDER BY POINT로점수의 디센딩으로 정렬해서 순위를 매긴다
당연히 PARTITION BY를 빼면 전교생의 순위가 되겠지?

결과는 이렇게 나온다.


(유저ID)      (학급)      (점수)
USERID    | CLASS |  POINT | 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