MS-SQL
[MSSQL] row_number() over, rank() over, dense_rank() over [펌]
아디봉
2013. 5. 13. 09:18
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.