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

'개발및업무 > SQL' 카테고리의 다른 글

[MS-SQL] 특정 테이블 권한 주기  (0) 2011.08.18
MSSQL저장프로시저 및 시스템 테이블 정보  (0) 2011.08.17
SQL Native Client(SNAC)  (0) 2011.07.26
Sqlite 데이터 MS-sql 이관 방법  (0) 2011.06.21
dts.dll 오류  (0) 2011.06.21

+ Recent posts