아디봉의.net
[MSSQL] row_number() over, rank() over, dense_rank() over [펌] 본문
1. ROW_NUMBER() OVER(ORDER BY 정렬할 필드)
2. RANK() OVER(ORDER BY 정렬할 필드)
3. DENSE_RANK() OVER(ORDER BY 정렬할 필드)
세 가지 함수 모두 순위를 구하는 용도로 사용이 가능하다. 그러나 조금씩 용법이 다르다.
1. ROW_NUMBER() OVER()
- 순위를 구하기는 하나 같은 값에 대하여 무시를 한다.
2. RANK() OVER()
- 같은 값은 동등한 순위로 값을 반환한다. 예로 100, 95, 95, 84, 70, 70, 56 이라는 값이 있을 때 결과값은 1, 2, 2, 4, 5, 5, 7 이 된다.
3. DENSE_RANK() OVER()
- 같은 값을 동등한 순위로 값을 반환한다. 하지만 RANK()와 다르게 동등한 순위의 다음 순위는 순차적으로 메겨진다. 2번과 같은 예가 있을 경우 RANK()의 결과값은 1, 2, 2, 4, 5, 5, 7 이 되었지만, DENSE_RANK() OVER() 는 1, 2, 2, 3, 4, 4, 5가 된다.
실제 사용 예제)
1. ROW_NUMBER() OVER(ORDER BY 정렬할 필드)
2. RANK() OVER(ORDER BY 정렬할 필드)
3. DENSE_RANK() OVER(ORDER BY 정렬할 필드)
3.
'MS-SQL' 카테고리의 다른 글
MS-SQL 특정프로시저만 사용권한 하기 (0) | 2012.08.20 |
---|---|
MS-SQL 실행계획 정리 (0) | 2012.03.19 |
MS-SQL 통계관련 정보확인및 업데이트하기 (0) | 2012.03.14 |
MS-SQL 성능최적화 하기 방법 (0) | 2012.03.14 |
MS-SQL 트랜잭션 격리수준& (sp_lock) (0) | 2012.03.13 |