Oracle DBA/SQL

20230627 (4) SQL 046 : 데이터 분석 함수로 바로 전 행과 다음 행 출력하기(LAG, LEAD)

Nuez 2023. 6. 28. 12:00
반응형

구조

이전 행 출력 :

LAG(대상컬럼, 출력하고자 하는 이전 행과의 거리) OVER (정렬기준)

 

이후 행 출력 :

LEAD(대상컬럼, 출력하고자 하는 이전 행과의 거리) OVER (정렬기준)


예제. 사원번호, 사원이름, 바로 전 행의 사원 번호, 바로 다음 행의 사원이름을 출력하시오.

SELECT empno, ename, 
		LAG(empno,1) OVER (ORDER BY empno) AS 이전행,
		LEAD(empno,1) OVER (ORDER BY empno) AS 다음행
FROM emp;


문제 227. 사원 이름, 이전 행의 사원 이름, 다음 행의 사원 이름을 출력하시오. 

SELECT ename,
    	LAG(ename,1) OVER (ORDER BY empno) AS 이전행,
    	LEAD(ename,1) OVER (ORDER BY empno) AS 다음행
FROM emp;


문제 228. 이름, 입사일, 바로 전에 입사한 사원의 입사일, 바로 다음 입사한 사원의 입사일을 출력하시오. 

(입사순으로 정렬하여 출력하시오.)

SELECT ename AS 이름, hiredate AS 입사일,
    LAG(hiredate,1) OVER (ORDER BY hiredate) AS "이전 입사일",
    LEAD(hiredate,1) OVER (ORDER BY hiredate) AS "이후 입사일"
FROM emp

 


문제 229. 사원 테이블에서 이름, 입사일, 바로 전에 입사한 사원과의 간격일을 출력하시오. 

SELECT ename, hiredate,
    	(hiredate - LAG(hiredate,1) OVER (ORDER BY hiredate)) AS DAYS
FROM emp;