[Oracle] Lead 와 Lag 편 이 량 함수 사용 상세 설명

3987 단어 Oracle
Oracle 은 두 가지 함수 가 있 습 니 다. LEAD 와 LAG 입 니 다. 이 두 함 수 는 모두 오프셋 을 계산 하 는 분석 함수 입 니 다. 이 두 함수 의 용법 은 같 습 니 다.
Oracle 공식 문서 설명 은:LEAD  is an analytic function. It provides access to more than one row of a table at the same time without a self join. Given a series of rows returned from a query and a position of the cursor,  LEAD  provides access to a row at a given physical offset beyond that position.
LEAD 함 수 는 분석 함수 로 연결 되 지 않 은 상태 에서 표 의 여러 줄 데 이 터 를 동시에 방문 할 수 있 습 니 다.돌아 오 는 일련의 데이터 줄 과 커서 를 조회 합 니 다. LEAD 함 수 는 현재 위치 에서 오프셋 에 따라 이 표 의 다른 줄 데 이 터 를 방문 합 니 다.
우 리 는 조회 의 예 시 를 결합 하여 이 함수 의 구체 적 인 용법 을 보 았 다.
1. lead 함 수 는 먼저 DEPTNO 부서 에 따라 그룹 을 나 누고 HIREDATE 에 따라 정렬 합 니 다. NEXTHIREDATE 는 HIREDATE 의 다음 오프셋 (오프셋 기본 값 은 1) 을 표시 합 니 다.
예 를 들 어 ALLEN 의 HIREDATE 가 '1981 - 2 - 20' 이면 ALLEN 의 NEXTHIREDATE 의 값 은 바로 '1981 - 2 - 22' (즉, WARD 의 HIREDATE 값) 이다.
마찬가지 로 WARD 의 HIREDATE 값 은 "1981 - 2 - 22" 입 니 다. 그러면 WARD 의 NEXTHIREDATE 값 은 "1981 - 5 - 1" (즉 BLAKE 의 HIREDATE 값) 입 니 다.
마지막 으로 JAMES 에서 다음 편 이 량 을 찾 을 수 없어 서 NEXTHIREDATE 의 기본 값 은 NULL 입 니 다.
--1、lead    
select e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate,1,null) over(partition by e.deptno order by e.hiredate) as next_hiredate
from emp e
where e.deptno=30;

2、 partition by 

--2、   partition by lead  
SELECT e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate) over(order by e.hiredate) as next_hiredate
FROM emp e;

3. Oracle 11g 은 LEAD 와 LAG 함 수 를 강화 하 는 문법 으로 {RESPECT 를 추가 했다. |  IGNORENULLS, LEAD , , 。
update emp e
set e.hiredate=NULL
where e.empno='7698';
commit;


select e.empno,
       e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate,1,NULL) over(partition by e.deptno order by e.empno) as next_hiredate
from emp e
where e.deptno=30;


7698-BLAKE HIREDATE , MARTIN NEXT_HIREDATE , RESPECT NULLS, IGNORE NULLS 。

select e.empno,
       e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate ignore nulls) over(partition by e.deptno order by e.empno) as next_hiredate
from emp e
where e.deptno=30;

IGNORE NULLS , NULL , 。

4、 N , 1, 。

--4、   offset,   =1,     2
select e.empno,
       e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate,2,null) over(partition by e.deptno order by e.hiredate) as next_hiredate
from emp e
where deptno=30;



5、LEAD , DEFAULT NULL, , LEAD 。

--5、lead   default  
select e.empno,
       e.ename,
       e.deptno,
       e.hiredate,
       lead(e.hiredate,1,to_date('2013-01-01','yyyy-MM-dd')) over(partition by e.deptno order by e.hiredate) as next_hiredate
from emp e
where deptno=30;




LAG 분석 함수 의 용법 은 기본적으로 lEAD 함수 유형 과 같 습 니 다. 단지 역할 이 반대 일 뿐 입 니 다. 여러분 은 자신의 기계 에서 직접 실천 할 수 있 습 니 다. 더 자세 한 정 보 는 참고 하 시기 바 랍 니 다.http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions086.htm#SQLRF00656

좋은 웹페이지 즐겨찾기