데이터 분석/SQL

[쉽게 쓴 SQL] LAG, LEAD 함수

참치바나나 2020. 11. 6. 12:14

* lag : 뒤처지다

* lead : 이끌다

 

이전 행의 값 또는 다음 행의 값을 알고 싶을 때 사용.

 

각 제품 보다 1단계 싼(이전 행의) 제품의 가격을 같이 보고, 그 차이를 알고 싶다. -LAG

SELECT 
	a.product_name
	,b.group_name
	,a.price
	,LAG (a.price, 1) OVER
		(PARTITION BY b.group_name
		ORDER BY a.price)
		AS prev_price
	,a.price 
	- LAG (a.price, 1) OVER 
		(PARTITION BY b.group_name
		ORDER BY a.price)
		AS cur_prev_diff
FROM product a
INNER JOIN product_group b
	ON (a.group_id = b.group_id);

4번째 컬럼에 1단계 싼 제품의 가격을 보이고, 5번째 컬럼에서 가격 차이를 볼 수 있다

 

각 제품 보다 1단계 비싼(다음 행의)  제품의 가격을 같이 보고, 그 차이를 알고 싶다. -LEAD

SELECT 
	a.product_name
	,b.group_name
	,a.price
	,LEAD (a.price, 1) OVER
		(PARTITION BY b.group_name
		ORDER BY a.price)
		AS next_price
	,a.price 
	- LEAD (a.price, 1) OVER 
		(PARTITION BY b.group_name
		ORDER BY a.price)
		AS cur_next_diff
FROM product a
INNER JOIN product_group b
	ON (a.group_id = b.group_id);

 

4번째 컬럼에 1단계 비싼 제품의 가격을 보이고, 5번째 컬럼에서 가격 차이를 볼 수 있다