카테고리 없음
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;
반응형