개발자 키우기
SQL - LAG / LEAD 계층형 함수 본문
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 |