블로그 이미지
세피롯스

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

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



posted by 세피롯스