본문 바로가기

Oracle/SQL

SQL 데이터 분석함수 - 전행과, 다음행 출력 Lag, Lead(컬럼, 1 or 2..)over (partition by ~ order by ~ desc/asc )

LAG, LEAD ( 전행과, 다음행 출력하기)

→ 은행에서 통장 잔고 확일할때 LAG ,LEAD 의 원리로 SQL 쿼리를 입력한다.

LAG : 전행 → LAG( 컬럼명, 1 OR 2 OR 3 ...)

LEAD : 다음행 → LEAD (컬럼명 , 1 OR 2 OR 3...)

→ 1 은 바로 전행 2는 전전행 3은 전전전행 ....

예제 46 : 이름 , 입사일, 바로전에 입사한 사원과의간격일 출력

select ename, hiredate, 
       hiredate - lag(hiredate,1) over (order by hiredate asc) as days
from emp;

문제 : 이름, 생일 , 생일과의 간격일을 출력

select ename,
       birth, birth - lag(birth , 1) over (order by birth asc) as 간격일 
from emp14;

설명 : BIRTH 에서 LAH BIRTH 를 빼야 한다.

간격일은 출력된 생일에서 - 그전 생일 이기때문에