SQL Server에서 조회된 데이터에 순번을 매기기 위해서는 ROW_NUMBER 함수를 사용하면 됩니다.
ROW_NUMBER 함수는 분석 함수이기 떄문에 OVER 절과 함계 사용해야 합니다.
ROW_NUMBER 함수와 비슷한 순위를 구할 수 있는 RANK 함수도 존재합니다.
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
ROW_NUMBER 함수는 분석 함수이기 때문에 OVER 절과 함계 사용해야 합니다.
OVER 절 내부 ORDER BY 절에 순번을 매길 기준 칼럼을 작성하면 됩니다.
기본 예제 1
SELECT 절에 ORDER BY 를 작성하지 않아도, OVER 절 내부의 ORDER BY 절의 정렬 칼럼 기준으로
데이터가 정렬된 후 데이터가 조회됩니다.
예제 2 - 정렬없이 순번 매기기
OVER 절 내부에 ORDER BY 절을 작성하지 않으면 아래와 같은 오류가 발생합니다.
"ROW_NUMBER" 함수에는 ORDER BY 가 포함된 OVER 절이 있어야 합니다.
그래서,
정렬 기준을 부여하지 않고 순번을 매기기 위해서는 ORDER BY 절에 SELECT 1 과 같은 의미 없는
것을 부여하여 원 데이터가 조회된 기준으로 순번을 매길 수 있습니다.
예제 3 - 그룹별 순번 매기기
OVER 절에 PATITION BY 절을 사용하여 그룹별로 순번을 매길 수 있습니다.
주의할 점
OVER 절을 사용할 경우 OVER 절 내부의 ORDER BY 절의 칼럼으로 정렬 후 데이터가 조회되지만,
SELECT 절에 추가로 ORDER BY 절을 사용할 경우 최종 정렬은 SELECT 절의 ORDER BY 절 기준으로
조회됩니다.
OVER 절 내부의 ORDER BY 절 기준으로 정렬 후 순번을 매겨졌고, SELECT 절에
ORDER BY 절의 city 컬럼으로 다시 정렬되었기 때문에 순번 순서로 조회되지 않습니다.
'IT 개발' 카테고리의 다른 글
[JavaScript] 자바스크립트 배열 (0) | 2025.01.01 |
---|---|
[JavaScript] 자바스크립트 substr, substring, slice (0) | 2024.12.31 |
[JavaScript] 자바스크립트 indexOf (1) | 2024.12.19 |
[JavsScript] 자바스크립트 split 함수 (0) | 2024.12.18 |
MSSQL - STUFF (1) | 2024.12.15 |