SQL 기본 및 활용
🗄️ SQLSQL 활용★★★★☆자주

행 사이를 넘겨다보는 함수 — LAG·LEAD·FIRST_VALUE

LAG 는 앞 행, LEAD 는 뒷 행의 값을 끌어오고, FIRST_VALUE·LAST_VALUE 는 창 안의 첫 행·마지막 행 값을 준다.

LAGLEADFIRST_VALUELAST_VALUE윈도우 함수

왜 그런지까지

정렬한 순서에서 바로 앞뒤 행의 값을 가져다 지금 행과 견주는 함수다. LAG(sal, 1, 0) 처럼 세 번째 인자를 주면 가져올 행이 없을 때 그 값을 대신 쓴다 — 주지 않으면 NULL 이 된다.

FIRST_VALUE 와 LAST_VALUE 는 창(윈도우)의 범위에 따라 결과가 달라지는데, 기본 범위가 '첫 행부터 현재 행까지' 이므로 LAST_VALUE 가 늘 현재 행을 가리키는 함정이 있다. 전체 마지막 값을 원하면 범위를 UNBOUNDED FOLLOWING 까지 넓혀야 한다.

돌려 보기

급여를 높은 순으로 세워 놓고 앞뒤 사람의 급여를 함께 본다. 첫 줄과 끝 줄이 왜 비는지 확인하자.

헷갈리는 것

LAG vs LEAD

LAG 는 정렬 순서에서 앞(이전) 행의 값을, LEAD 는 뒤(다음) 행의 값을 가져온다.

LAST_VALUE 의 기본 범위

창의 기본 범위가 첫 행부터 현재 행까지라, LAST_VALUE 는 그대로 쓰면 현재 행 값을 준다.

확인 문제

넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다