카테고리:

윈도우 함수 구문 및 사용법 (순위 지정)

LEAD

테이블 자체를 조인하지 않으면서 동일 결과 세트의 이후 행에 있는 데이터에 액세스합니다.

참고 항목:

LAG

구문

LEAD ( <expr> [ , <offset> , <default> ] ) [ { IGNORE | RESPECT } NULLS ] OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] ) 
Copy

인자

expr

반환할 문자열 식입니다.

offset

값을 가져오는 현재 행의 앞쪽 행 수입니다. 예를 들어 offset 이 2는 행 간격이 2인 expr 값을 반환합니다.

음수 오프셋을 설정하는 것은 LAG 함수를 사용하는 것과 같은 효과를 가집니다.

기본값은 1입니다. IGNORE NULLS 가 지정된 경우, 최댓값은 1,000,000입니다.

default

오프셋이 윈도우 범위를 벗어날 때 반환할 식입니다. 유형이 expr 과 호환되는 모든 식을 지원합니다.

기본값은 NULL입니다.

{ IGNORE | RESPECT } NULLS

expr 에 NULL 값이 포함된 경우 NULL 값을 무시할지 또는 적용할지 여부입니다.

  • IGNORE NULLS 는 오프셋 행을 계산할 때 식이 NULL 로 평가되는 모든 행을 제외합니다.

  • RESPECT NULLS 는 오프셋 행을 계산할 때 식이 NULL 로 평가되는 모든 행을 포함합니다.

기본값: RESPECT NULLS

사용법 노트

  • PARTITION BY 절은 FROM 절에 의해 생성된 결과 세트를 함수가 적용되는 파티션으로 분할합니다. 자세한 내용은 윈도우 함수 구문 및 사용법 섹션을 참조하십시오.

  • ORDER BY 절은 각 파티션 내의 데이터를 정렬합니다.

CREATE OR REPLACE TABLE sales( emp_id INTEGER, year INTEGER, revenue DECIMAL(10,2)); INSERT INTO sales VALUES (0, 2010, 1000), (0, 2011, 1500), (0, 2012, 500), (0, 2013, 750); INSERT INTO sales VALUES (1, 2010, 10000), (1, 2011, 12500), (1, 2012, 15000), (1, 2013, 20000); INSERT INTO sales VALUES (2, 2012, 500), (2, 2013, 800); SELECT emp_id, year, revenue, LEAD(revenue) OVER (PARTITION BY emp_id ORDER BY year) - revenue AS diff_to_next FROM sales ORDER BY emp_id, year; 
Copy
+--------+------+----------+--------------+ | EMP_ID | YEAR | REVENUE | DIFF_TO_NEXT | |--------+------+----------+--------------| | 0 | 2010 | 1000.00 | 500.00 | | 0 | 2011 | 1500.00 | -1000.00 | | 0 | 2012 | 500.00 | 250.00 | | 0 | 2013 | 750.00 | NULL | | 1 | 2010 | 10000.00 | 2500.00 | | 1 | 2011 | 12500.00 | 2500.00 | | 1 | 2012 | 15000.00 | 5000.00 | | 1 | 2013 | 20000.00 | NULL | | 2 | 2012 | 500.00 | 300.00 | | 2 | 2013 | 800.00 | NULL | +--------+------+----------+--------------+ 
CREATE OR REPLACE TABLE t1 ( c1 NUMBER, c2 NUMBER); INSERT INTO t1 VALUES (1,5), (2,4), (3,NULL), (4,2), (5,NULL), (6,NULL), (7,6); SELECT c1, c2, LEAD(c2) IGNORE NULLS OVER (ORDER BY c1) FROM t1; 
Copy
+----+------+------------------------------------------+ | C1 | C2 | LEAD(C2) IGNORE NULLS OVER (ORDER BY C1) | |----+------+------------------------------------------| | 1 | 5 | 4 | | 2 | 4 | 2 | | 3 | NULL | 2 | | 4 | 2 | 6 | | 5 | NULL | 6 | | 6 | NULL | 6 | | 7 | 6 | NULL | +----+------+------------------------------------------+