일렬번호, 순위 구하기

 

1. Sub Query 사용

 

 

2. ROW_NUMBER 함수, RANK 함수, DENSE_RANK 함수 사용 ( 2005 이상 )

 

- 정렬필드가 높은값이 순위가 높이려면 OVER 절 뒤에 DESC 적용

 

1) ROW_NUMBER() OVER(ORDER BY 정렬 필드)

 

- 같은 값은 무시

 

2) RANK() OVER(ORDER BY 정렬 필드)

 

- 같은 값은 동등한 값으로 값을 반환.

- 다음순위는 중복된 순위를 포함하여 순위 매김

- 1,2,2,2,5,6,7,7,9...

 

3) DENSE_RANK() OVER(ORDER BY 정렬 필드)

 

-  같은 값을 동등한 값으로 반환

- 다음순위는 순차적으로 적용

- 1,2,2,2,3,3,4,4,5

 

< 예 : ROW_NUMBER() >

 

 

[ 1, 2번 실행 계획 ]

- MSSQL 에서 제공하는 함수가 있으면 함수를 쓰는게 좋다. 

Posted by 도깨비방망이