개발자 키우기

SQL - LAG / LEAD 계층형 함수 본문

Back-end/DB

SQL - LAG / LEAD 계층형 함수

개발자 키우기 2023. 10. 27. 20:56

LAG 함수 ( 이전 값 )

 

LAG(기준 컬럼명, 값을 가져올 ROW 위치, 값이 없을 경우 기본값) OVER(ORDER BY 정렬할 컬럼명)

 

SELECT ROWNUM num
        ,LAG(ROWNUM, 1, NULL) OVER (ORDER BY ROWNUM DESC) lag
FROM DUAL
CONNECT BY LEVEL <= 5;
NUM     LAG
5	
4  	 5
3	 4
2	 3
1	 2

 

LEAD 함수 ( 이후 값 )


LEAD(기준 컬럼명, 값을 가져올 ROW 위치, 값이 없을 경우 기본값) OVER(ORDER BY 정렬할 컬럼명)

 

SELECT ROWNUM num
        ,LEAD(ROWNUM, 1, NULL) OVER (ORDER BY ROWNUM DESC) lead
FROM DUAL
CONNECT BY LEVEL <= 5;
NUM     LEAD
5	 4
4	 3
3	 2
2	 1
1

 

데이터베이스는 명시적으로 ROW의 순서를 정하지 않는다면 순서가 없다.

 

따라서 ORDER BY로 순서를 정해주어야 DBMS가 이전이나 이후의 데이터 순서를 가지고 계층형 함수를 구현할 수 있다.

 

'Back-end > DB' 카테고리의 다른 글

DBA 실무교육 3일차  (0) 2024.12.08
DBA 실무 교육 2일차  (0) 2024.12.01
DBA 실무 교육 1일차  (0) 2024.11.24
Mybatis - DB 데이터 전송 객체  (0) 2023.10.26
DB - 컬럼 또는 로우 합칠때 주의점  (0) 2023.10.26