TOOL/DATABASE 2015. 11. 13. 18:41

다음 함수들로 순서를 매길 수 있다.


다만, 특징이 있는데, 


///// rank() over(order by) 

-동일 한 값에 대해서 같은 순위가 적용된다. (순위는 중복 가능)(스포츠 경기에서 순위 매기는 것과 같다.)


SELECT CLASS, SCORE, RANK() OVER (ORDER BY SCORE DESC) RANK FROM TMP_TABLE;


-partition을 이용하여 클래스 라는 컬럼마다 적용


SELECT CLASS, SCORE, RANK() OVER (PARTITION BY CLASS ORDER BY SCORE DESC) RANK FROM TMP_TABLE;


///// rownumber() over(order by) 

-동일한 값 내에서도 다른 순번이 적용된다. (순번은 중복 불가, UNIQUE함)


SELECT CLASS, SCORE, ROW_NUMBER() OVER (ORDER BY SCORE DESC) RANK FROM TMP_TABLE;


-partition을 이용하여 클래스 라는 컬럼마다 적용


SELECT CLASS, SCORE, ROW_NUMBER() OVER (PARTITION BY CLASS ORDER BY SCORE DESC) RANK FROM TMP_TABLE;




※ 참고

rank() over와 rownumber() over와의 차이 : http://codingdojang.com/scode/255

rank() over와 rownumber() over에서 partition by 쓰임새 : http://www.zetswing.com/bbs/board.php?bo_table=ORACLE_TIP&wr_id=18

'TOOL > DATABASE' 카테고리의 다른 글

EXISTS() 와 IN  (0) 2015.11.25
DECODE()  (0) 2015.11.25
DB 심화  (0) 2015.09.15
ORACLE쿼리를 MYSQL쿼리로 바꿔야할 상황이 생겼다.  (1) 2015.06.18
Oracle  (0) 2015.05.04