Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

forest_moon

[Oracle] LAG, LEAD 함수 본문

SQL

[Oracle] LAG, LEAD 함수

rokga 2023. 5. 30. 14:56

LAG, LEAD 함수

 

 

LAG / LEAD (컬럼명 [,offset] [,default]) OVER([PARTITION BY 컬럼] ORDER BY 컬럼 )

★ SQL SERVER 에서는 지원하지 않는 함수이다 !

 

LAG 함수 - 이전 행의 값을 리턴한다

LEAD 함수 - 다음 행의 값을 리턴한다 

offset - 값을 가져올 행의 위치 ( 기본값 1 ) - 생략가능

default - 값이 없을 경우의 기본값 - 생략가능

PARTITION BY - 그룹 컬럼명 - 생략가능

ORDER BY - 정렬 컬럼명 - 필수

 

LAG / LEAD 함수

SELECT
	number,
	weight,
	LAG(number) OVER(ORDER BY number) AS numberlag ,
	LEAD(number) OVER(ORDER BY number) AS numberlead
FROM
	table
WHERE
	number IN ('1','2','3')

numberlag  - 이전행의 값

numberlead - 다음행의 값

 

위 예시에서 LAG(number  , 3) 으로 변경하면 3번째 이전 행의 값을 표시한다.

SELECT
	number,
	weight,
	LAG(number,3) OVER(ORDER BY number) AS numberlag ,
	LEAD(number,3) OVER(ORDER BY number) AS numberlead
FROM
	table
WHERE
	number IN ('1','2','3')

 

 

default 값

SELECT
	number,
	weight,
	LAG(number,3,0000) OVER(ORDER BY number) AS numberlag ,
	LEAD(number,3,0000) OVER(ORDER BY number) AS numberlead
FROM
	table
WHERE
	number IN ('1','2','3')

number의 컬럼에서 3번째 전의 값을 가져오는데 값이없을 경우 0000의 값으로 표시한다.

'SQL' 카테고리의 다른 글

[SQL] Optimizer 옵티마이저 란 ?  (0) 2023.05.31
[SQL] Window Function 윈도우 함수  (0) 2023.05.30
[SQL] SQL WITH문  (0) 2023.04.20
[SQL] SQL UNION , UNION ALL  (0) 2023.04.18
[SQL] Query 실행 순서  (0) 2023.04.02