티스토리 뷰


순위 함수


순위 함수 : SQL Server 2005부터 RANK(), NTITLE(), DENSE_RANK(), ROW_NUMBER() 등 4가지 순위 함수를 제공

<순위 함수 명> OVER (
	[PARTITION BY 'partition_by_list']
	ORDER BY 'order_by_list'
)

쿼리문


1. ROW_NUMBER() : 동일한 값이 있다고 하더라도 동일한 값 마저도 무조건 순위를 1씩 증가시키는 순위 함수

SELECT ROW_NUMBER() OVER (
		ORDER BY height DESC, name ASC
		) AS [키가 큰 순위(ROW_NUMBER)]
	,name
	,addr
	,height
FROM userTbl



2. DENSE_RANK() : 동일한 값이 있어도, 다음 순위가 동점자 수를 고려하지 않는 순위 함수

SELECT DENSE_RANK() OVER (
		ORDER BY height DESC
		) AS [키가 큰 순위(DENSE_RANK)]
	,name
	,addr
	,height
FROM userTbl


3. RANK() : 동일한 값이 있을 경우, 다음 순위가 동점자 수를 고려한 순위 함수

SELECT RANK() OVER (
		ORDER BY height DESC
		) AS [키가 큰 순위(RANK)]
	,name
	,addr
	,height
FROM userTbl


4. NTILE(n) : n개의 그룹을 나누고, 순위가 그룹별로 정해지는 순위 함수

SELECT NTILE(2) OVER (
		ORDER BY height DESC
		) AS [반 번호(NTILE)]
	,name
	,addr
	,height
FROM userTbl


5. PARTITION BY : 특정 조건을 그룹으로 매핑하고, 그룹별로 순위를 지정할 수 있다.

SELECT ROW_NUMBER() OVER (
		PARTITION BY addr ORDER BY height DESC ,name ASC
		) AS [키가 큰 순위(PARTITION BY - 지역별)]
	,name
	,addr
	,height
FROM userTbl






참고


http://egloos.zum.com/sweeper/v/3001971


'SQL > MS-SQL' 카테고리의 다른 글

[MS-SQL] DISTINCT (중복 제거)  (0) 2018.08.21
[MS-SQL] 저장 프로시저 내의 포함된 문자열 검색  (0) 2018.08.20
[MS-SQL] SELECT INTO  (0) 2018.08.17
[MS-SQL] LTRIM / RTRIM(공백 제거)  (0) 2018.08.16
[MS-SQL] IS NULL / IS NOT NULL  (0) 2018.08.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함