반응형
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 |