SQL SERVER

SQL2005 랭킹 함수

bedbmsguru 2010. 11. 3. 00:15
1. ROW_NUMBER()
SELECT rank() OVER(ORDER BY 칼럼) FROM 테이블
순차적으로 증가되는 값 각 row마다 unique 한 값을 가진다.

2. RANK(), DENSE_RANK()
SELECT rank() OVER([옵션] ORDER BY 칼럼) FROM 테이블
옵션에 partition by를 추가하면 칼럼별로 그룹핑된 순위를 보여준다.
rank()와 dense_rank()의 차이
1  1
2  2
2  2
2  2
5  3
6  4
7  5
.  .
.  .
.  .

3. NTILE()
사용법:NTILE (integer_expression)    OVER ( [ <partition_by_clause> ] < order_by_clause > )

Ex) select col1 ntile(100) OVER ( ORDER BY col3) as myresult FROM T1
myresult 칼럼을 통해 100(integer_expression ) 으로 나눴을때 어느정도에 위치하는지 볼수 있음 (설명하기 어렵다.-_-a)