* 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번째 컬럼에서 가격 차이를 볼 수 있다
'데이터 분석 > SQL' 카테고리의 다른 글
[쉽게 쓴 SQL] INTERSECT (0) | 2020.11.08 |
---|---|
[쉽게 쓴 SQL] UNION + ALL (0) | 2020.11.06 |
[쉽게 쓴 SQL] FIRST_VALUE, LAST_VALUE 함수 (0) | 2020.11.06 |
[쉽게 쓴 SQL] ROW_NUMBER, RANK, DENSE_RANK 차이 (0) | 2020.11.06 |
[SQL 문법] AVG 함수 (0) | 2020.11.05 |