더북(TheBook)

LAG() 함수부터 살펴봅시다. 매개변수로 salary를 명시했고 나머지 매개변수는 생략했으니 n은 1, default_value는 NULL이 적용됩니다. 따라서 현재 로우를 기준으로 바로 앞(n이 1이므로 1 - 1) 로우의 salary 값을 가져오라는 것이죠.

결과를 보면 IT 부서의 103번 사원은 lag_previous 값으로 NULL이 반환됐는데, 지정된 파티션(IT 부서)과 정렬 순서(급여의 내림차순)를 기준으로 볼 때 앞 로우가 없어서 그렇습니다. 104번은 급여가 6000이고, 앞 로우는 103번이므로 lag_previous 값으로 9000을 반환했습니다. 이런 방식으로 LAG() 함수는 현재 로우를 기준으로 지정된 파티션과 순서에 따라 앞 로우의 값을 반환합니다.

이와 반대로 LEAD() 함수는 현재 로우를 기준으로 다음 로우의 값을 반환합니다. 결과의 lead_next 값을 보면 103번은 다음 로우인 104번의 급여 6000을, 104번은 105번의 급여인 4800을 반환했고, 마지막 107번은 범위 안에 다음 로우가 없으므로 NULL을 반환했습니다.

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