안녕하세요. 저번에 rank나 분석함수를 사용하지 않고 순위를 구하는 것에 대하여 질문을 드렸는데요.
사용하다보니 dense_rank()함수의 역할을 하는 부분도 필요하게 되어 다시 질문을 드립니다.
dense_rank()를 사용하지 않고 순위에 대한 결과를 얻고 싶습니다.
아래와 같이 결과를 얻고싶습니다.
stu_no sco ranking stu_no sco ranking
--------------------------- -----------------------------
3 100 1 3 100 1
1 100 1 1 100 1
2 95 3 2 95 2
5 80 4 5 80 3
4 60 5 4 60 4
WITH T ( STU_NO , SCO ) AS ( SELECT 3, 100 FROM DUAL UNION ALL SELECT 1, 100 FROM DUAL UNION ALL SELECT 2, 95 FROM DUAL UNION ALL SELECT 5, 80 FROM DUAL UNION ALL SELECT 4, 60 FROM DUAL ) SELECT T1.STU_NO , T1.SCO , RANK() OVER(ORDER BY T1.SCO DESC) RK , DENSE_RANK() OVER(ORDER BY T1.SCO DESC) DRK , T2.RN FROM T T1 , (SELECT ROWNUM RN , SCO FROM ( SELECT SCO FROM T GROUP BY SCO ORDER BY SCO DESC ) ) T2 WHERE T1.SCO(+) = T2.SCO ORDER BY T1.SCO DESC