LAG
설명
LAG
행을 그룹화하고, 필드를 기준으로 행을 정렬하고, 그룹의 현재 행(위)에 지정된 오프셋에 있는 행의 필드 값을 반환하는 윈도우 집계 함수입니다.다음
PARTITION BY
절은 입력 행 세트를 그룹으로 분할하는 데 사용할 필드를 결정합니다. 다음 ORDER BY
절은 파티션의 행을 정렬하는 방법을 결정합니다.Workday는 분할 필드에 따라 입력 행을 그룹화하고, 순서 지정 필드에 따라 행을 정렬한 다음, 각 그룹의 집계 표현식(이 함수의 경우 지연)을 계산합니다.
구문
LAG(input_field,offset,default_value)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
반환 값
행마다
input_field
와 동일한 유형의 값을 1개 반환합니다.입력 매개변수
- input_field
- 필수 콘텐츠 집계 함수를 수행할 필드입니다. 모든 필드 유형을 지정할 수 있습니다.
- offset
- (옵션) 값을 반환할 현재 행 앞의 행 수입니다. 영(0) 이상 100 이하의 리터럴 숫자여야 합니다. 오프셋을 지정하지 않으면 Workday는 값 1을 사용합니다.
- default_value
- (옵션) 오프셋 행이 현재 정의된 윈도우를 벗어나거나 오프셋 행의 값이 NULL인 경우 이 함수가 반환하는 값입니다.default_value는input_field와 유형이 동일해야 합니다. 기본값을 지정하지 않으면 Workday는 NULL 값을 사용합니다.
- OVER()
- 필수입니다.OVER기간 내에 사용해야 합니다.LAG표현식
- PARTITIONBYpartitioning_field
- 필수 콘텐츠 다음을 사용합니다.PARTITION BY절을 사용하여 입력 행 그룹을 분할하는 데 사용할 하나 이상의 필드를 지정합니다. 통화를 제외한 모든 필드 유형을 지정할 수 있습니다. 예: 월 필드를 파티셔닝 필드로 지정하면 Workday가 월 값이 동일한 모든 레코드를 단일 파티션으로 그룹화합니다.
- ORDER BYorder_field
- 필수 콘텐츠 다음을 사용합니다.ORDER BY절을 사용하여 각 파티션 내에서 지정된 필드의 값을 사용하여 파티션의 입력 행을 정렬하는 방법을 지정합니다. 통화를 제외한 모든 필드 유형을 지정할 수 있습니다.다음을 사용할 수 있습니다.DESC또는ASC키워드를 사용하여 각 순서 지정 필드에 대해 내림차순(높은 값에서 낮은 값, NULL이 마지막에 표시) 또는 오름차순(낮은 값부터 높은 값, NULL이 먼저 표시)으로 정렬합니다. 순서 필드의 정렬 순서를 지정하지 않으면 Workday가 자동으로 행을 오름차순으로 정렬합니다.
예
예를 들어 다음과 같은 행과 필드가 포함된 데이터세트가 있습니다.
row_ID | Employee_Name | Eff_Date | 급여 |
|---|---|---|---|
0 | 고어 | 1/1/18 | 49000 |
2 | 고어 | 1/1/19 | 56000 |
3 | 고어 | 2017/1/1 | 44000 |
4 | Freeman | 1/1/18 | 65000 |
5 | Freeman | 2017/1/1 | 57000 |
6 | Freeman | 1/1/19 | 69000 |
7 | Smith | 1/1/18 | 51000 |
8 | Smith | 1/1/19 | 56000 |
9 | Smith | 1/1/16 | 44000 |
유효일(
Eff_Date
) 필드를 기준으로 각 직원의 행을 오름차순(ASC)으로 정렬할 수 있으므로 최근 급여가 각 파티션에서 첫 번째에 오도록 합니다.Salary_Increase
필드에 다음 표현식을 사용하여 각 유효일 변경 사이의 급여 변동을 계산합니다.[Salary] - (LAG([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] ASC) )
다음과 같은 결과가 표시됩니다.
row_ID | Employee_Name | Eff_Date | 급여 | Salary_Increase |
|---|---|---|---|---|
2 | 고어 | 1/1/19 | 56000 | 7000 |
0 | 고어 | 1/1/18 | 49000 | 5000 |
3 | 고어 | 2017/1/1 | 44000 | 0 |
6 | Freeman | 1/1/19 | 69000 | 4000 |
4 | Freeman | 1/1/18 | 65000 | 8000 |
5 | Freeman | 2017/1/1 | 57000 | 0 |
8 | Smith | 1/1/19 | 56000 | 5000 |
7 | Smith | 1/1/18 | 51000 | 7000 |
9 | Smith | 1/1/16 | 44000 | 0 |