web developer

[sql] LAG, LEAD 함수 본문

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

'SQL' 카테고리의 다른 글

[sql] GROUP BY  (0) 2023.08.20
[sql] sql, database, dbms, schema 개념 이해하기  (0) 2022.12.10