더북(TheBook)

LAG(expr, n, default_value), LEAD(expr, n, default_value)

LAG()는 현재 로우의 바로 앞 로우의 값을, LEAD()는 현재 로우의 다음 로우의 값을 반환하는 함수입니다. 참고로 lag는 지연, lead는 선두란 뜻이죠. 두 함수는 3개의 매개변수가 있습니다. 첫 번째 매개변수인 expr은 값을 반환할 칼럼(표현식), n은 몇 번째 로우의 값을 가져오는지를 나타내는 숫자, default_value는 반환값이 NULL일 때 NULL을 대체하는 값입니다. 이때 n과 default_value는 생략할 수 있습니다. 생략하면 n은 1, default_value는 NULL이 적용됩니다.

두 함수 역시 예제로 작동 방식을 알아봅시다.

코드 11-15

SELECT employee_id, emp_name, dept_name, salary,
       LAG(salary) OVER (PARTITION BY dept_name
                             ORDER BY salary DESC
                         ) lag_previous,
       LEAD(salary) OVER (PARTITION BY dept_name
                              ORDER BY salary DESC
                         ) lead_next
  FROM emp_hierarchy
 ORDER BY 3, 4 DESC;

실행결과

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