DATABASE/ORACLE 기본

[Oracle] 오라클 전의 행과 다음 행 출력 함수 LAG()와 LEAD()

ThinkFree 2022. 6. 28. 18:36

LAG()와 LEAD()

- LAG()와 LEAD()를 사용하여 바로 전의 행의 데이터와 바로 다음 행의 데이터를 출력할 수 있습니다.


LAG()와 LEAD() 문법

SELECT LAG(컬럼, 1) OVER (ORDER BY 컬럼),
       LEAD(컬럼, 1) OVER (ORDER BY 컬럼)
 FROM 테이블;

- LAG()LEAD() 둘 다 문법상 첫 번째 괄호 안에 옵션에는 이전 혹은 다음 행으로 출력하고 싶은 데이터의 컬럼과, 숫자를 써줍니다. 숫자의 크기만큼 이전 행 혹은 다음행이 출력되며, 1을 적으면 바로 전, 다음 행이 출력되고, 2를 적으면 전 전행 혹은 다음다음 행이 출력됩니다. 그 후 OVER와 함께 ORDER BY로 데이터를 정렬시켜 줍니다.


LAG()와 LEAD() 테스트(https://livesql.oracle.com/)

1) LAG()

- LAG()를 사용하여 특정 날짜의 입양한 동물들의 데이터에 그 이전 날짜에 입양한 동물의 입양날짜를 추가하여 출력하였습니다. 옵션에 숫자 1을 집어넣었기에 하나의 데이터씩 건너뛰어 출력되었습니다.

 

2) LEAD()

- LEAD()를 사용하여 특정 날짜의 입양한 동물들의 데이터에 그 다음 날짜에 입양한 동물의 입양 날짜를 추가하여 출력하였습니다. 옵션에 숫자 2를 집어넣었기에 두 개의 데이터씩 건너뛰어 출력되었습니다.