11.2.4 프레임 절과 윈도우 함수 함께 사용하기
윈도우 함수 중 FIRST_VALUE(), LAST_VALUE(), NTH_VALUE() 함수는 앞에서 다루지 않았는데, 세 함수는 프레임 절과 함께 사용하기 때문입니다. 세 함수를 제외한 나머지 윈도우 함수도 프레임 절과 함께 사용할 수는 있지만, 계산 결과에 아무 영향도 주지 않아서 프레임 절을 사용하든 사용하지 않든 반환값은 동일합니다. 그럼 세 함수의 사용법을 알아봅시다.
FIRST_VALUE( ), LAST_VALUE( )
FIRST_VALUE()와 LAST_VALUE() 함수는 주어진 프레임의 첫 번째 로우의 값과 마지막 로우의 값을 반환합니다. 두 함수 역시 프레임 절에서 ROWS를 사용했을 때와 RANGE를 사용했을 때의 반환값이 다릅니다. 예제로 알아보죠.
코드 11-23
SELECT employee_id, emp_name, dept_name, salary,
FIRST_VALUE(salary) OVER ( PARTITION BY dept_name
ORDER BY salary DESC
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) firstvalue,
LAST_VALUE(salary) OVER ( PARTITION BY dept_name
ORDER BY salary DESC
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) lastvalue
FROM emp_hierarchy
WHERE dept_name IN ('IT', 'Finance')
ORDER BY 3, 4 DESC;