<테이블 EMP>

SELECT EMP_ID, SALARY, DEPT_ID
, ROW_NUMBER() OVER(PARTITION BY DEPT_ID ORDER BY SALARY DESC) AS COL1
FROM EMP;
ROW_NUMBER()는 결과 집합에서 각 행에 고유한 번호를 할당한다.
부서 ID별로 구간을 나누고 이를 연봉 순으로 내림차순으로 정렬한다.

SELECT EMP_ID, SALARY, DEPT_ID
, SUM(SALARY) OVER(PARTITION BY DEPT_ID ORDER BY EMP_ID
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS COL2
FROM EMP;
SUM으로 부서별 연봉 누적 합계를 계산하는데 먼저 직원 번호를 오름차순으로 정렬 후 합계를 계산하게 된다.
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
이는 윈도우 함수(여기서는 SUM)가 적용되는 범위를 지정한다.
UNBOUNDED PRECEDING : 첫 번째 행부터 시작한다
CURRENT ROW : 현재의 행
즉, 현재 행을 포함한 이전 행까지 함수의 범위를 지정한다.
참고로 여기서는 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW를 지워도 결과는 같다.

SELECT EMP_ID, SALARY, DEPT_ID
, MAX(SALARY) OVER(ORDER BY SALARY DESC ROWS CURRENT ROW) COL3
FROM EMP;
MAX(SALARY)는 주어진 범위에서 연봉의 최대값을 구한다.
연봉을 내림차순으로 정렬하고 ROWS CURRENT ROW로 현재 행을 기준으로 최대값을 구한다.
