본문 바로가기

개발/데이터베이스

[ORACLE] LAG 함수, LEAD 함수

반응형

LAG 함수와 LEAD 함수는 내가 원하는 값의 위와 아래에 있는 값을 알 수 있는 함수이다.
이런 걸 왜 쓰나 싶겠지만 위나 아래의 값과 현재의 값을 비교할 때 쓰는 일이 생각보다 많다.
SQLD 같은 시험에서도 헷갈리라고 출제된다.

▷ LAG 함수

LAG 함수는 기준 데이터의 이전행의 값을 반환해 주는 함수이다.

사용방법

LAG(대상 컬럼명) OVER(ORDER BY 대상 컬럼명)

예시

아래와 같은 회원 목록을 저장하고 있는 MEMBER_LIST라는 테이블이 있다고 가정하자.

ID PW NAME CREATE_DATE
dblover 12345 최디비 2021-10-16
oraclelover 1234 황오라클 2021-10-18
sqllover 123456 김에스 2021-10-21
javalover 123 이자바 2021-10-22
jslover 12345 고제이 2021-10-23
pythonlover 1234567 한파이썬 2021-10-25


LAG 함수를 활용해서 가입일(CREATE_DATE)을 기준으로 이전 사람의 가입 일을 함께 출력해 보자.

SELECT ID, PW, NAME, CREATE_DATE, LAG(CREATE_DATE) OVER(ORDER BY CREATE_DATE) AS PREV_DATE FROM MEMBER_LIST;


위의 쿼리문을 실행하면 아래와 같은 결과가 나온다.

ID PW NAME CREATE_DATE PREV_DATE
dblover 12345 최디비 2021-10-16
oraclelover 1234 황오라클 2021-10-18 2021-10-16
sqllover 123456 김에스 2021-10-21 2021-10-18
javalover 123 이자바 2021-10-22 2021-10-21
jslover 12345 고제이 2021-10-23 2021-10-22
pythonlover 1234567 한파이썬 2021-10-25 2021-10-23

▷ LEAD 함수

LEAD 함수는 기준 데이터의 다음 행위 값을 반환해 주는 함수이다.

사용방법

LEAD(대상 컬럼명) OVER(ORDER BY 대상 컬럼명)

예시

위에서와 마찬가지로 회원 목록을 저장하고 있는 MEMBER_LIST라는 테이블이 있다고 가정하자.

ID PW NAME CREATE_DATE
dblover 12345 최디비 2021-10-16
oraclelover 1234 황오라클 2021-10-18
sqllover 123456 김에스 2021-10-21
javalover 123 이자바 2021-10-22
jslover 12345 고제이 2021-10-23
pythonlover 1234567 한파이썬 2021-10-25


LEAD 함수를 활용해서 가입일(CREATE_DATE)를 기준으로 다음 사람의 가입 일을 함께 출력해 보자.

SELECT ID, PW, NAME, CREATE_DATE, LEAD(CREATE_DATE) OVER(ORDER BY CREATE_DATE) AS NEXT_DATE FROM MEMBER_LIST;


위의 쿼리문을 실행하면 아래와 같은 결과가 나온다.

ID PW NAME CREATE_DATE NEXT_DATE
dblover 12345 최디비 2021-10-16 2021-10-18
oraclelover 1234 황오라클 2021-10-18 2021-10-21
sqllover 123456 김에스 2021-10-21 2021-10-22
javalover 123 이자바 2021-10-22 2021-10-23
jslover 12345 고제이 2021-10-23 2021-10-25
pythonlover 1234567 한파이썬 2021-10-25


반응형

'개발 > 데이터베이스' 카테고리의 다른 글

[ORACLE] 테이블명 및 컬럼명 규칙  (0) 2021.12.03
[DB] 트랜잭션  (0) 2021.11.19
[ORACLE] LENGTH 함수, LENGTHB 함수  (0) 2021.10.31
[ORACLE] INSERT ALL 구문  (0) 2021.10.30
[ORACLE] DB LINK 확인 쿼리  (0) 2021.10.19