요약 :이 자습서에서는 ROW_NUMBER()
를 사용하여 각 행에 순차 번호를 할당하는 방법을 배웁니다. 쿼리 결과 집합에서.
SQL ROW_NUMBER () 함수 개요
ROW_NUMBER()
는 순차 정수 번호를 할당하는 창 함수입니다. 쿼리 결과 집합의 각 행입니다.
다음은 ROW_NUMBER()
함수의 구문을 보여줍니다.
이 구문에서
- 먼저,
PARTITION BY
절은FROM
절을 파티션으로 나누십시오.PARTITION BY
절은 선택 사항입니다. 생략하면 전체 결과 집합이 단일 파티션으로 처리됩니다. - 그런 다음
ORDER BY
절이 각 파티션의 행을 정렬합니다.ROW_NUMBER()
는 순서에 민감한 함수이므로ORDER BY
절이 필요합니다. - 마지막으로 각 행의 각 행 파티션에는 행 번호라고하는 순차 정수 번호가 지정됩니다. 행 번호는 파티션 경계를 넘을 때마다 재설정됩니다.
SQL ROW_NUMBER () 예제
employees
및 departments
테이블 :
A) 간단한 SQL ROW_NUMBER () 예제
다음 문은 모든 직원의 이름, 성 및 급여를 찾습니다. 또한 ROW_NUMBER()
함수를 사용하여 각 행에 순차적 인 정수를 추가합니다.
다음 그림 부분 결과 집합을 표시합니다.
B ) 페이지 매김에 SQL ROW_NUMBER () 사용
ROW_NUMBER()
함수를 페이지 매김에 사용할 수 있습니다. 예를 들어 각 페이지에 10 개의 레코드가있는 페이지별로 애플리케이션의 테이블에있는 모든 직원을 표시하려는 경우
- 먼저
ROW_NUMBER()
함수를 사용하여 각 행에 순차적 인 정수를 할당합니다. - 둘째, 요청 된 페이지별로 행을 필터링합니다. 예를 들어 첫 번째 페이지에는 1에서 9까지의 행이 있고 두 번째 페이지에는 11에서 20까지의 행이 있습니다.
다음 문은 다음의 레코드를 반환합니다. 두 번째 페이지에는 각 페이지에 10 개의 레코드가 있습니다.
다음은 출력을 보여줍니다.
하위 쿼리 대신 CTE (공통 테이블 식)를 사용하려는 경우 쿼리는 다음과 같습니다.
C) SQL ROW_NUMBER 사용 () 그룹당 n 번째로 높은 값 찾기
다음 예는 부서에서 급여가 가장 높은 직원을 찾는 방법을 보여줍니다.
서브 쿼리에서 :
- 먼저
PARTITION BY
절은 직원을 부서별로 배포합니다. - 두 번째,
ORDER BY
절은 급여를 기준으로 각 부서의 직원을 내림차순으로 정렬합니다. - 셋째,
ROW_NUMBER()
는 각 행에 순차적 인 정수 번호를 할당합니다. . 부서가 변경되면 번호를 재설정합니다.
다음은 하위 쿼리의 결과 집합을 보여줍니다.
외부 쿼리에서 row_num
가있는 직원 행만 선택했습니다. 값 1입니다.
다음은 전체 쿼리의 결과입니다.
WHERE
절의 술어를 1에서 2, 3 등으로 변경하면 다음과 같은 직원을 얻게됩니다. 두 번째로 높은 급여, 세 번째로 높은 급여 등이 있습니다.
이 자습서에서는 SQL ROW_NUMBER()
함수를 사용하여 순차를 할당하는 방법을 배웠습니다. 쿼리 결과 집합의 각 행에 정수를 추가합니다.
- 이 자습서가 도움이 되었습니까?
- 예 아니요