LAG 창 함수 - Amazon Redshift

LAG 창 함수

LAG 창 함수는 파티션에서 현재 행 위(앞)의 지정 오프셋에 위치한 행의 값을 반환합니다.

구문

LAG (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )

인수

value_expr

함수가 실행되는 대상 열 또는 표현식입니다.

Offset

현재 행 앞으로 값을 반환할 행이 위치한 수를 지정하는 파라미터(옵션)입니다. 이 오프셋은 상수 정수 혹은 정수로 평가되는 표현식이 될 수 있습니다. 오프셋을 지정하지 않으면 Amazon Redshift가 기본값으로 1을 사용합니다. 오프셋이 0이면 현재 행을 나타냅니다.

IGNORE NULLS

Amazon Redshift에서 사용할 행을 결정할 때 null 값을 건너뛰어야 한는 것을 의미하는 명세(옵션)입니다. IGNORE NULLS를 지정하지 않으면 NULL 값이 포함됩니다.

참고

NVL 또는 COALESCE 표현식을 사용하여 NULL 값을 다른 값으로 변경할 수도 있습니다. 자세한 내용은 NVL 및 COALESCE 함수 단원을 참조하십시오.

RESPECT NULLS

Amazon Redshift에서 사용할 행을 결정할 때 null 값을 포함시켜야 한다는 것을 의미합니다. RESPECT NULLS는 IGNORE NULLS를 지정하지 않은 경우 기본적으로 지원됩니다.

OVER

창 파티션 및 순서를 지정합니다. OVER 절에는 창 프레임 명세가 포함될 수 없습니다.

PARTITION BY window_partition

OVER 절에서 각 그룹의 레코드 범위를 설정하는 인수(옵션)입니다.

ORDER BY window_ordering

각 파티션의 행을 정렬합니다.

LAG 윈도 함수는 Amazon Redshift 데이터 형식을 모두 사용하는 표현식을 지원합니다. 반환 형식은 value_expr 형식과 동일합니다.

예시

다음은 구매자 ID가 3인 구매자에게 팔린 티켓 수량과 구매자 3이 티켓을 구입한 시간을 나타내는 예입니다. 쿼리가 구매자 3의 각 판매 수량을 이전 판매 수량과 비교할 수 있도록 각 판매 수량에 대한 이전 판매 수량을 반환합니다. 2008년 1월 16일 이전에는 구매 기록이 없기 때문에 이전 판매 수량의 첫 번째 값은 NULL입니다.

select buyerid, saletime, qtysold, lag(qtysold,1) over (order by buyerid, saletime) as prev_qtysold from sales where buyerid = 3 order by buyerid, saletime; buyerid | saletime | qtysold | prev_qtysold ---------+---------------------+---------+-------------- 3 | 2008-01-16 01:06:09 | 1 | 3 | 2008-01-28 02:10:01 | 1 | 1 3 | 2008-03-12 10:39:53 | 1 | 1 3 | 2008-03-13 02:56:07 | 1 | 1 3 | 2008-03-29 08:21:39 | 2 | 1 3 | 2008-04-27 02:39:01 | 1 | 2 3 | 2008-08-16 07:04:37 | 2 | 1 3 | 2008-08-22 11:45:26 | 2 | 2 3 | 2008-09-12 09:11:25 | 1 | 2 3 | 2008-10-01 06:22:37 | 1 | 1 3 | 2008-10-20 01:55:51 | 2 | 1 3 | 2008-10-28 01:30:40 | 1 | 2 (12 rows)