SQL
[sql] LAG, LEAD 함수
trueman
2023. 8. 22. 00:12
728x90
728x90
LAG, LEAD 함수
LAG와 LEAD는 모두 Window 함수로 각각 현재 행 이전 행과 이후 행의 데이터에 접근 할 수 있습니다.
기본 문법은 다음과 같습니다.
LAG(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY )
LEAD(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY )
- LAG 함수 : 이전 행 값 return
- LEAD 함수 : 다음 행의 값 return
- offset : 값을 가져올 행의 위치, default 1
- default : 값이 없을 경우 지정 할 기본 값
* offset은 몇 번째 이전(또는 이후) 행에 대해 접근할 지를 정수로 나타냅니다.
* 생략가능 : offset, default, partition by
* 생략 불가 : order by
1-1. LAG를 이용한 직전 분기(quarter)의 매출 [ default 값 X ]
/* LAG */
SELECT seq,
year,
quarter,
sales,
LAG(sales, 1) OVER (ORDER BY year, quarter ASC) AS last_quarter_sales
FROM quarter_sales;
1-2. LAG를 이용한 직전 분기(quarter)의 매출 [ default 값 O ]
/* LAG */
SELECT seq,
year,
quarter,
sales,
LAG(sales, 1, 10) OVER (ORDER BY year, quarter ASC) AS last_quarter_sales
FROM quarter_sales;
1-3. LAG를 이용한 직전 분기(quarter)의 매출과 차이
/* LAG */
SELECT seq,
year,
quarter,
sales,
sales - LAG(sales, 1) OVER (partition by year order by year, quarter asc) as last_quarter_sales
FROM quarter_sales;
2. LEAD를 이용한 직후 분기(quarter)의 매출
/* LEAD */
SELECT seq,
year,
quarter,
sales,
LEAD(sales, 1) OVER (partition by year order by year, quarter asc) as last_quarter_sales
FROM quarter_sales;
출처 : https://www.qu3vipon.com/sql-guide#823c3272-d70d-4952-9c34-2a0dcc31f3f4
728x90
728x90