Obsidian/Recognition/Programing/Oracle/LAG, LEAD 함수 (위아래 행간 컬럼 비교).md

38 lines
1009 B
Markdown
Raw Normal View History

2023-08-14 16:19:25 +00:00
#Oracle
LAG(expr [,offset] [,default]) OVER([partition_by_clause] order_by_clause)
LEAD(expr [,offset] [,default]) OVER([partition_by_clause] order_by_clause)
LAG 함수 : 이전 행의 값을 리턴
LEAD 함수 : 다음 행의 값을 리턴
expr : 대상 컬럼명
offset : 값을 가져올 행의 위치 기본값은 1, 생략가능
default : 값이 없을 경우 기본값, 생략가능
partition_by_clause : 그룹 컬럼명, 생략가능
order_by_clause : 정렬 컬럼명, 필수
- 기본사용
```SQL
SELECT empno
, ename
, job
, sal
, LAG(empno) OVER(ORDER BY empno) AS empno_prev
, LEAD(empno) OVER(ORDER BY empno) AS empno_next
, LEAD(empno, 2, 9999) OVER(ORDER BY empno) AS empno_next2
FROM emp
WHERE job IN ('MANAGER', 'ANALYST', 'SALESMAN')
```
- 그룹컬럼 기준
```SQL
SELECT empno
, ename
, job
, sal
, LAG(job) OVER(PARTITION BY job ORDER BY empno) AS empno_prev
FROM emp
WHERE job IN ('MANAGER', 'ANALYST', 'SALESMAN')
```