WINDOW 함수
행과 행간의 관계를 쉽게 정의하기 위해 만든 함수
AVG, CORR, COUNT, FIRST_VALUE, LAST_VALUE, MAX, MIN, NTH_VALUE, STDDEV, SUM, VARIANCE 등 함수와 사용가능
FIRST_VALUE(EXPR)
파티션별 윈도우에서 가장 먼저 나온 값을 구한다.
1 2 3 4 5 6 7 8 9 | SELECT DEPARTMENT_ID, EMP_NAME, HIRE_DATE, SALARY , FIRST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS ALL_SALARY , FIRST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS FR_ST_TO_CURRENT_SAL , FIRST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS FR_CURRENT_TO_END_SAL FROM EMPLOYEES WHERE DEPARTMENT_ID IN (30, 90); | cs |
LAST_VALUE(EXPR)
파티션별 윈도우에서 가장 나중에 나온 값을 구한다.
1 2 3 4 5 6 7 8 9 | SELECT DEPARTMENT_ID, EMP_NAME, HIRE_DATE, SALARY , LAST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS ALL_SALARY , LAST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS FR_ST_TO_CURRENT_SAL , LAST_VALUE(SALARY) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS FR_CURRENT_TO_END_SAL FROM EMPLOYEES WHERE DEPARTMENT_ID IN (30, 90); | cs |
NTH_VALUE(MEASURE_EXPR, N)
주어진 그룹에서 N번째 로우에 해당하는 MEASURE_EXPR 값을 반환한다.
1 2 3 4 5 6 7 8 9 | SELECT DEPARTMENT_ID, EMP_NAME, HIRE_DATE, SALARY , NTH_VALUE(SALARY, 2) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS ALL_SALARY , NTH_VALUE(SALARY, 2) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS FR_ST_TO_CURRENT_SAL , NTH_VALUE(SALARY, 2) OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS FR_CURRENT_TO_END_SAL FROM EMPLOYEES WHERE DEPARTMENT_ID IN (30, 90); | cs |
반응형
'📃 DATABASE > ORACLE' 카테고리의 다른 글
[PL/SQL] PL/SQL 기초 (0) | 2018.01.17 |
---|---|
[SQL] 다중 테이블 INSERT (1) | 2018.01.16 |
[SQL] 분석 함수 (0) | 2018.01.15 |
[SQL] WITH절과 순환 서브쿼리 (0) | 2018.01.15 |
[SQL] 계층형 쿼리 (0) | 2018.01.09 |