ROW_NUMBER
설명
ROW_NUMBER
행을 그룹화하고, 필드를 기준으로 행을 정렬하고, 각 그룹의 첫 번째 행에 대해 1부터 시작하는 고유한 순차적 번호를 그룹의 각 행에 지정하는 윈도우 집계 함수입니다. ROW_NUMBER
항상 그룹의 각 행에 고유한 값을 지정합니다. 다음을 사용할 수 있습니다. ROW_NUMBER
- 데이터세트의 각 행에 대해 고유한 ID를 생성합니다.다음
PARTITION BY
절은 입력 행 세트를 그룹으로 분할하는 데 사용할 필드를 결정합니다.다음
ORDER BY
절은 순차 번호가 지정되기 전에 파티션의 행을 정렬하는 방법을 결정합니다. Workday는 분할 필드에 따라 입력 행을 그룹화하고 순서 필드에 따라 행을 정렬한 다음, 각 그룹의 집계 표현식(이 함수의 경우 행 번호 매기기)을 계산합니다. 각 그룹에서 번호가 매겨진 행은 1에서 시작합니다.
구문
ROW_NUMBER()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
반환 값
유형의 값을 반환합니다.
INTEGER
.입력 매개변수
- OVER()
- 필수입니다.OVER기간 내에 사용해야 합니다.ROW_NUMBER표현식
- PARTITIONBYpartitioning_field
- 필수 콘텐츠 다음을 사용합니다.PARTITION BY절을 사용하여 입력 행 그룹을 분할하는 데 사용할 하나 이상의 필드를 지정합니다. 통화를 제외한 모든 필드 유형을 지정할 수 있습니다. 예: 월 필드를 파티셔닝 필드로 지정하면 Workday가 월 값이 동일한 모든 레코드를 단일 파티션으로 그룹화합니다.
- ORDER BYorder_field
- 필수 콘텐츠 다음을 사용합니다.ORDER BY절을 사용하여 각 파티션 내에서 지정된 필드의 값을 사용하여 파티션의 입력 행을 정렬하는 방법을 지정합니다. 통화를 제외한 모든 필드 유형을 지정할 수 있습니다.다음을 사용할 수 있습니다.DESC또는ASC키워드를 사용하여 각 순서 지정 필드에 대해 내림차순(높은 값에서 낮은 값, NULL이 마지막에 표시) 또는 오름차순(낮은 값부터 높은 값, NULL이 먼저 표시)으로 정렬합니다. 순서 필드의 정렬 순서를 지정하지 않으면 Workday가 자동으로 행을 오름차순으로 정렬합니다.
예
예를 들어 다음과 같은 행과 필드가 포함된 데이터세트가 있습니다.
직원 | 판매일 | 영업 |
|---|---|---|
고어 | 12/31/2018 | 140 |
고어 | 11/30/2018 | 60 |
고어 | 10/31/2018 | 140 |
Freeman | 12/31/2018 | 160 |
Freeman | 11/30/2018 | 60 |
Freeman | 10/31/2018 | 110 |
Smith | 12/31/2018 | 140 |
Smith | 11/30/2018 | 60 |
Smith | 10/31/2018 | 120 |
각 직원의 영업에 고유한 ID를 내림차순으로 지정할 수 있으므로 가장 높은 영업 실적에 1의 순위가 부여됩니다.
직원별 매출 수
필드에서 다음 표현식을 사용합니다.ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
다음과 같은 결과가 표시됩니다.
직원 | 판매일 | 영업 | 직원별 매출 |
|---|---|---|---|
고어 | 12/31/2018 | 140 | 0 |
고어 | 10/31/2018 | 140 | 2 |
고어 | 11/30/2018 | 60 | 3 |
Freeman | 12/31/2018 | 160 | 0 |
Freeman | 10/31/2018 | 110 | 2 |
Freeman | 11/30/2018 | 60 | 3 |
Smith | 12/31/2018 | 140 | 0 |
Smith | 10/31/2018 | 120 | 2 |
Smith | 11/30/2018 | 60 | 3 |
또한 각 날짜의 매출에 고유 ID를 내림차순으로 지정하여 가장 높은 매출에 1의 순위를 지정할 수도 있습니다.
Sales Num by Date
필드에 다음 표현식을 사용합니다.ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
다음과 같은 결과가 표시됩니다.
직원 | 판매일 | 영업 | 날짜별 매출 |
|---|---|---|---|
Freeman | 12/31/2018 | 160 | 0 |
고어 | 12/31/2018 | 140 | 2 |
Smith | 12/31/2018 | 140 | 3 |
고어 | 11/30/2018 | 60 | 0 |
Freeman | 11/30/2018 | 60 | 2 |
Smith | 11/30/2018 | 60 | 3 |
고어 | 10/31/2018 | 140 | 0 |
Smith | 10/31/2018 | 120 | 2 |
Freeman | 10/31/2018 | 110 | 3 |
다음을 사용할 수도 있습니다.
ROW_NUMBER
- ID당 여러 행을 포함하는 데이터세트에서 모든 행의 최신 버전을 확인합니다. 이 시나리오에서 데이터세트에는 해당 행의 정보가 최신 정보가 된 시점을 나타내는 날짜 필드가 필요합니다. 데이터 웨어하우징 개념에 익숙한 경우 이는 유형 2에서 느리게 변화하는 디멘션 테이블입니다. 다음 행과 필드가 포함된 데이터세트가 있습니다.ID | 이름 | 지역 | 유효일 |
|---|---|---|---|
G1 | Gorman | 서부 | 01/01/2015 |
H1 | Harris | 서부 | 01/01/2015 |
G1 | Gorman | 동부 | 09/01/2016 |
H1 | Harris | 동부 | 01/03/2017 |
H1 | Harris | 신분증 | 01/20/2021 |
각 ID의 최신 버전에 값 1을 지정하려면
Latest Version
필드에 다음 표현식을 사용합니다.ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
다음과 같은 결과가 표시됩니다.
ID | 이름 | 지역 | 유효일 | 최신 버전 |
|---|---|---|---|---|
G1 | Gorman | 서부 | 01/01/2015 | 2 |
H1 | Harris | 서부 | 01/01/2015 | 3 |
G1 | Gorman | 동부 | 09/01/2016 | 0 |
H1 | Harris | 동부 | 01/03/2017 | 2 |
H1 | Harris | 신분증 | 01/20/2021 | 0 |
각 ID의 최신 행만 반환하기 위해 필터 단계를 사용하여
최신 버전을
필터링할 수 있습니다.