LEAD
LEAD
테이블을 자기 자신과 조인하지 않고도 동일한 결과 집합에서 후속 행의 데이터에 접근해요.
본문
참고 항목: LAG
구문 (Syntax)
LEAD ( [ , , ] ) [ { IGNORE | RESPECT } NULLS ]
OVER ( [ PARTITION BY ] ORDER BY [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] )
인자 (Arguments)
-
expr— 반환할 문자열 표현식이에요. -
offset— 값을 얻기 위해 현재 행에서 앞으로 이동할 행 수예요. 예를 들어offset이 2이면 2행 간격으로expr값을 반환해요. 음수 offset을 설정하면 LAG 함수를 사용하는 것과 같은 효과가 있다는 점에 유의해요. 기본값은 1이에요.IGNORE NULLS가 지정되면 최대값은 1,000,000이에요. -
default— offset이 윈도우의 경계를 벗어날 때 반환할 표현식이에요.expr과 타입이 호환되는 모든 표현식을 지원해요. 기본값은 NULL이에요. -
{ IGNORE | RESPECT } NULLS—expr에 NULL 값이 포함될 때 NULL 값을 무시할지 존중할지 여부:IGNORE NULLS는 offset 행을 셀 때 표현식이 NULL로 평가되는 모든 행을 제외해요.RESPECT NULLS는 offset 행을 셀 때 표현식이 NULL로 평가되는 모든 행을 포함해요.
기본값:
RESPECT NULLS
사용 노트 (Usage Notes)
- PARTITION BY 절은 FROM 절이 만든 결과 집합을 함수가 적용되는 파티션으로 분할해요. 자세한 내용은 윈도우 함수 구문 및 사용(window function syntax and usage) 문서를 참고해요.
- ORDER BY 절은 각 파티션 내의 데이터를 정렬해요.
예제 (Examples)
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;
+--------+------+----------+--------------+
| 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;
+----+------+------------------------------------------+
| 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 |
+----+------+------------------------------------------+
더 알아보기
- Snowflake 윈도우 함수 — 관련 윈도우 함수 전체 목록