티스토리 뷰
SQL/MS-SQL
[MS-SQL] 순위 함수 (ROW_NUMBER, DENSE_RANK, RANK, NTILE), PARTITION BY
추억꽃 2018. 8. 23. 19:58순위 함수
순위 함수 : 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
참고
'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
TAG
- 1260
- #kotlin
- 피보나치 수 4
- 문자열
- algorithm
- mssql
- 최대공약수와 최소공배수
- #android #motionlayout
- 1237
- Eclipse
- 10828
- a^b
- 10827
- javacv
- kotlin
- 10757
- algorihtm
- constraintlayout
- 단어 길이 재기
- OpenCV
- 10826
- 영상처리
- 2743
- 알고리즘
- 함수형사고 Kotlin Java
- 1158
- 조세퍼스 문제
- GCD 합
- 자동타입
- 큰 수 A+B
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함