더북(TheBook)

② NTH_VALUE (measure_expr, n)

NTH_VALUE 함수는 주어진 그룹에서 n번째 로우에 해당하는 measure_expr 값을 반환한다. 30, 90번 부서별로 두 번째에 해당하는 급여를 뽑아 보자.

입력

    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) ;
그림 7-29 NTH_VALUE 함수

30번 부서는 all_salary 컬럼 값으로 두 번째에 해당하는 Alexander의 급여가 모든 로우에 걸쳐 출력되었다. Den은 fr_st_to_current_sal 컬럼 값이 NULL인데, 이는 처음부터 현재 로우까지를 대상으로 두 번째 로우를 가져와야 하는데 두 번째 로우가 없기 때문에 NULL이 나온 것이다. 마찬가지로 Karen은 현재 로우부터 끝 지점까지를 대상으로 하면 두 번째 로우가 없기 때문에 fr_current_to_end_sal 값이 NULL로 출력되었다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.