일렬번호, 순위 구하기
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 에서 제공하는 함수가 있으면 함수를 쓰는게 좋다.
'프로그래밍 > MS SQL' 카테고리의 다른 글
[MSSQL][함수] Split 유형의 함수로 구분자로 몇번째 위치의 문자열 가져오기 (0) | 2013.05.22 |
---|---|
[MSSQL][함수] 일정 길이 이상의 문자열 자르고 대체문자(...) 붙이는 함수 (0) | 2013.05.20 |
[MSSQL] 반올림, 올림, 내림 (2) | 2013.03.19 |
[MSSQL] [프로젝트] 필드명에 따른 변수 할당 프로시져 (0) | 2013.03.05 |
ALTER TABLE 컬럼 상태 변경 ( PK, Default 등 ) (0) | 2013.02.14 |