반응형
데이터베이스를 사용할때 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 전에 값을 가져오게 된다.
바로 이전의 값과 이후의 값도 가져올수 있어서,
전달 대비 매출량 차이 등을 구할때 효과적으로 사용할 수 있다.
반응형
'IT > Database' 카테고리의 다른 글
[SQL 쿼리 튜닝] OR -> UNION ALL 변환 (38) | 2023.06.26 |
---|---|
데이터베이스 테이블 합집합, 차집합(UNION, UNION ALL, MINUS, INTERSECT, EXCEPT) (46) | 2023.06.25 |
upsert 란? (62) | 2023.06.12 |
CLOB 타입 (28) | 2023.05.31 |
데이터베이스 최적화 방법 2 (23.04.28) (22) | 2023.04.29 |
댓글