카테고리 없음

Oracle - FIRST_VALUE, LAST_VALUE, LAG, LEAD 활용하기

helloworld IT 2020. 4. 18. 20:41
반응형

FIRST_VALUE : PARTITION BY 한 데이터 중 가장 처음으로 오는 값

LAST_VALUE : PARTITION BY 한 데이터 중 가장 마지막으로 오는 값

 

LAG : 파이션별 윈도우에서 이전 몇 번째 행 가지는 함수

LEAD : 파티션별 윈도우에서 이후 몇 번쨰 행의 값 가져오는 함수

(LAG, LEAD는 많이 찾아보고 했는데, 아직 정확히 잘 모르겠고, 실제 활용할 수 있으려나...)

 

FIRST VALUE 

 

 
 
 
/*JOB 종류 별 SALARY 가 가장 높은 사람 (FIRST_VALUE, PARTITION BY)*/
          SELECT  ENAME,
                  JOB,
                  SAL,
                  FIRST_VALUE(ENAME) OVER (PARTITION BY JOB ORDER BY SAL DESC) FIRST_SALARY 
             FROM EMP;
 
 
 

 

LAST VALUE

 

 
 
 
/*JOB 종류 별 SALARY 가 가장 낮은 사람 (LAST_VALUE, PARTITION BY)*/
          SELECT  ENAME,
                  JOB,
                  SAL,
                  LAST_VALUE(ENAME) OVER (PARTITION BY JOB ORDER BY SAL DESC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS LAST_SALARY 
             FROM EMP;
 
 
 

 

LAG 

 
 
 
          /*입사일자가 빠른 기준으로 정렬, 본인보다 입사일자가 한 명 앞선 사원 급여 출력*/
           SELECT  ENAME, 
                   HIREDATE, 
                   SAL, 
                   LAG(SAL) OVER (ORDER BY HIREDATE) LAG_HIREDATE 
              FROM EMP;
 
 
 

LEAD

 
 
 
 /*입사일자가 빠른 기준으로 정렬, 입사한 인력의 입사일자를 함께 출력*/
          SELECT  ENAME,
                  HIREDATE,
                  LEAD(HIREDATE, 1) OVER (ORDER BY HIREDATE) LEAD_HIREDATE 
             FROM EMP;
 
 
 

반응형