본문 바로가기
IT/Database

LAG, LEAD 함수에 대해서

by 성준하이 2023. 6. 21.
반응형

데이터베이스를 사용할때 LAG , LEAD 함수에 대해서 들어본 적이 있는지.

 

먼저 사전 풀이 그대로 사용한다면

LAG - 뒤떨어지다. LEAD - 이끌다.

라는 의미를 가지고 있다.

 

그럼 이 단어를 데이터베이스에서 적용을 하면 어떻게 될까?

 

이전의 값과 이 후의 값을 나타낼수 있다.

 

먼저 사용법은 아래와 같다.

 

LAG/LEAD(컬럼명 {,offset} {,default}) OVER({PARTITION BY} ORDER BY)

 

offset, default, partition by는 생략가능, order by는 생략 불가!!

  • LAG 함수 : 이전 행 값 return
  • LEAD 함수 : 다음 행의 값 return
  • offset : 값을 가져올 행의 위치, default 1
  • default : 값이 없을 경우 지정 할 기본 값
  • PARTITION BY : 현재 행 기준으로 이후 행 전부
  • ORDER BY : 현재

 

date value
1/1 1
1/2 2
1/3 3
1/4 4

대충 만들었지만이럴 경우에 

select *, lag(value,3) over(order by date) as valuee from table

이 쿼리를 사용한다면

date value valuee
1/1 1  
1/2 2  
1/3 3  
1/4 4 1

이렇게 3 전에 값을 가져오게 된다.

바로 이전의 값과 이후의 값도 가져올수 있어서,

전달 대비 매출량 차이 등을 구할때 효과적으로 사용할 수 있다.

반응형

댓글