개발/데이터베이스
[ORACLE] LAG 함수, LEAD 함수
그린티소야
2021. 11. 1. 17:00
반응형
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 |
반응형