본문 바로가기
IT/ORACLE

[ORACLE] 오라클 LAG, LEAD 함수 사용법 및 예제

by 베베야 2021. 5. 11.
728x90

이번시간에는 오라클 LAG, LEAD  함수에 대해서 알아보겠습니다.
- LAG  : 이전 행의 값을 출력
- LEAD : 다음 행의 값을 출력

 

오라클 LAG, LEAD 함수 사용법 및 예제.txt
0.00MB

 

 

사전 준비

--테이블 생성
CREATE TABLE EMP
(
    EMPNO NUMBER
    ,ENAME VARCHAR2(50)
    ,SAL   FLOAT
    ,MGR   NUMBER
)

--데이터 삽입
INSERT INTO EMP VALUES (100,'A',999,'');
INSERT INTO EMP VALUES (400,'B',666,'300');
INSERT INTO EMP VALUES (300,'C',777,'200');
INSERT INTO EMP VALUES (500,'D',555,'200');
INSERT INTO EMP VALUES (200,'E',888,'100');
INSERT INTO EMP VALUES (600,'F',666,'400');
COMMIT;

--데이터 조회
SELECT * FROM EMP
EMPNO ENAME SAL MGR
100     A       999 
400     B       666 300
300     C       777 200
500     D       555 200
200     E       888 100
600     F       666 400


예제 쿼리#1

SELECT
    EMPNO
   ,ENAME
   ,SAL
   ,LAG(empno) OVER(ORDER BY empno)  AS empno_prev
   ,LEAD(empno) OVER(ORDER BY empno) AS empno_next
FROM EMP

--기본 사용법
EMPNO ENAME SAL EMPNO_PREV EMPNO_NEXT
100   A     999            200
200   E     888 100        300
300   C     777 200        400
400   B     666 300        500
500   D     555 400        600
600   F     666 500


예제 쿼리#2

SELECT
    EMPNO
   ,ENAME
   ,SAL
   ,LAG(empno,2) OVER(ORDER BY empno)  AS empno_prev
   ,LEAD(empno,2) OVER(ORDER BY empno) AS empno_next
FROM EMP

--두번째 이전값(100)과 두번째 다음 값(300)을 출력
EMPNO ENAME SAL EMPNO_PREV EMPNO_NEXT
100   A     999            300    
200   E     888            400    
300   C     777 100        500
400   B     666 200        600
500   D     555 300    
600   F     666 400    


예제 쿼리#3

SELECT
    EMPNO
   ,ENAME
   ,SAL
   ,LAG(empno,2,999) OVER(ORDER BY empno)  AS empno_prev
   ,LEAD(empno,2,999) OVER(ORDER BY empno) AS empno_next
FROM EMP

--가져올 값이 없을 경우 999를 출력
EMPNO ENAME SAL EMPNO_PREV EMPNO_NEXT
100   A     999 999        300    
200   E     888 999        400    
300   C     777 100        500
400   B     666 200        600
500   D     555 300        999
600   F     666 400        999
반응형
그리드형

댓글