본문 바로가기

DATA/SQL

SQL: LAG 함수 활용하여 현재 데이터와 이전 데이터를 비교

 

LAG 함수 정의 

SELECT LAG([대상 컬럼], [이전 offset], [기본값]) OVER (PARTITION BY [..] ORDER BY [..])

 

LAG함수를 이용하면, 이전 행 값과 다음 행의 값을 비교할 수 있다.

 

 

예시 문제: 이전 일과 비교했을 때, 온도가 더 높았던 날짜를 집계하기

with tmp as (
select id ,RecordDate,Temperature,
LAG (Temperature,1) OVER (ORDER BY RecordDate) AS prev_Temperature,
LAG (RecordDate,1) OVER (ORDER BY RecordDate) AS prev_RecordDate
from Weather)

select id from tmp where Temperature>prev_Temperature and (RecordDate-prev_RecordDate)=1

 

1. 바로 날짜를 찾을 수 없기 때문에, 온도가 더 높았던 때를 찾기위해 with 서브쿼리절로 먼저 묶어주었다.

2. LAG함수를 이용하여 날짜와 온도를 비교하는 값을 출력해주었다.