개발및업무/SQL

[MS-SQL] RANK(), DENSE_RANK(), ROW_NUMBER() 차이(순위 생성 방법)

H0IT 2011. 8. 3. 12:03
728x90

[MS-SQL] RANK(), DENSE_RANK(), ROW_NUMBER() 차이
위 구문들은 MS-SQL에서 순위를 매기기 위해 주로 사용하게 되는 구문이다.

ROW_NUMBER() OVER ([<partition_by_clause>] <order_by_clause>)
RANK() OVER ([<partition_by_clause>] <order_by_clause>)
DENSE_RANK() OVER ([<partition_by_clause>] <order_by_clause>)

성적 ROW_NUMBER RANK  DENSE_RANK 
85  1  1 1
85  2  1 1
82  3  3 2
80  4  4 3

위에 테이블 명이 [성적]인 경우 셀렉트 방법

SELECT RANK() OVER (PARTITION BY ORDER BY 성적) AS 'RANK'
              , DENSE_RANK() OVER (PARTITION BY ORDER BY 성적) AS 'DENSE_RANK'
              , ROW_NUMBER() OVER (PARTITION BY ORDER BY 성적) AS 'ROW_NUMBER'
FROM 성적

위와 같이 사용하면 된다.


더 자세한 내용 참고 하고 싶다면,
http://thehobt.blogspot.com/2009/02/rownumber-rank-and-denserank.html

728x90