행과 행 간의 관계를 정의하기 위해서 제공되는 함수
- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.
SELECT WINDOW_FUNCTION(arguments)
OVER (PARTITION BY col1
ORDER BY col2
windowing절)
FROM TABLE1;
SELECT EMPNO, ENAME, SAL, SUM(SAL) OVER (ORDER BY SAL
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS ACC_SAL
FROM EMP;
SELECT ENAME, SAL, RANK() OVER (ORDER BY SAL DESC) RANK,
DENSE_RANK() OVER (ORDER BY SAL DESC) RANK_INDEX,
ROW_NUMBER() OVER (ORDER BY SAL DESC) ROW_NUM
FROM EMP;
SELECT ENAME, SAL, MGR, SUM(SAL) OVER (PARTITION BY MGR) 담당_매니저가_같은_사원들의_SAL_합
FROM EMP;
FIRST_VALUE(COL1)
LAST_VALUE(COL1)
LAG(COL1)
LAG(COL1, 1)
LAG(COL1, 1, 'default value')
LEAD(COL1)
LEAD(COL1, 1)
LEAD(COL1, 1, 'default value')
SELECT DEPTNO, ENAME, SAL, LAG(SAL) OVER(ORDER BY SAL DESC) AS PREV_SAL
LEAD(SAL) OVER(ORDER BY SAL DESC) AS NEXT_SAL
FROM EMP;
0
1
SELECT DEPTNO, ENAME, SAL, PERCENT_RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) AS PERCENT_SAL_IN_DEPT
NTILE(5) OVER(ORDER BY SAL DESC) AS SAL_LEVEL
FROM EMP;