문제
다음 SQL문에서 FIRST_VALUE 윈도우 함수의 실행 결과는?
SELECT 사원명, 급여, FIRST_VALUE(급여) OVER (PARTITION BY 부서 ORDER BY 급여 DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS 부서최고급여 FROM 사원;
각 부서에서 급여가 두 번째로 높은 사원의 '부서최고급여' 값은?
① 해당 사원의 급여 ② 부서에서 가장 높은 급여 ③ 부서 평균 급여 ④ NULL
정답
2번
해설
②번이 정답이다. FIRST_VALUE는 지정된 윈도우 프레임 내에서 첫 번째 행의 값을 반환한다. ORDER BY 급여 DESC로 정렬되어 있고, ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 프레임이므로, 각 행에서 부서 내 가장 높은 급여(첫 번째 행)가 반환된다. 따라서 두 번째로 높은 급여를 가진 사원도 부서 최고급여를 얻는다.