개발/database

SQL LEAD 함수 가이드

가시죠 2025. 1. 28. 13:36
반응형

SQL LEAD 함수 가이드

LEAD 함수는 SQL에서 사용하는 윈도우 함수로, 현재 행을 기준으로 다음 행의 값을 가져오는 기능을 제공한다.
이를 통해 연속된 데이터 간의 관계를 분석하거나, 다음 데이터를 현재 행과 함께 표시할 수 있다.
주로 시계열 데이터나 순서가 중요한 데이터 분석에 유용하며, 메일링을 보낼때 너비가 작고 밑으로 여러내용을 표시해야 할 경우 사용한다.


LEAD 함수의 기본 사용법

기본 문법

LEAD(column_name [, offset, default]) OVER (PARTITION BY column_name ORDER BY column_name)

매개변수 설명

  • column_name: 다음 행의 값을 가져올 열.
  • offset (선택 사항):
    • 기본값은 1이며, 몇 번째 다음 행을 가져올지 지정.
    • 예: LEAD(column_name, 2)는 현재 행으로부터 두 번째 다음 값을 반환.
  • default (선택 사항):
    • 다음 행이 없을 때 반환할 기본값.
    • 기본값을 지정하지 않으면 NULL을 반환.
  • OVER:
    • PARTITION BY: 데이터를 그룹화하여 그룹별로 동작합니다.
    • ORDER BY: 데이터를 정렬하여 LEAD가 기준 행과 다음 행을 올바르게 선택하도록 합니다.

예제와 결과

예제 데이터

아래는 예제 테이블 example_table

ID VALUE
1 A
2 B
3 C
4 D

예제 1: 기본 LEAD 함수 사용

다음 행의 값을 가져오는 간단한 예제

SELECT
    ID,
    VALUE,
    LEAD(VALUE) OVER (ORDER BY ID) AS NEXT_VALUE
FROM example_table;

결과

ID VALUE NEXT_VALUE
1 A B
2 B C
3 C D
4 D NULL
  • ID=1: 다음 행의 값은 B (ID=2).
  • ID=4: 다음 행이 없으므로 NEXT_VALUENULL.

예제 2: 기본값 사용

다음 행이 없을 때 기본값을 지정

SELECT
    ID,
    VALUE,
    LEAD(VALUE, 1, 'N/A') OVER (ORDER BY ID) AS NEXT_VALUE
FROM example_table;

결과

ID VALUE NEXT_VALUE
1 A B
2 B C
3 C D
4 D N/A
  • 다음 행이 없을 경우 기본값으로 N/A를 반환

예제 3: 그룹화와 정렬

PARTITION BY를 사용하여 데이터를 그룹화하고, 각 그룹 내에서 다음 값을 가져옴

SELECT
    department,
    employee,
    LEAD(employee) OVER (PARTITION BY department ORDER BY hire_date) AS next_employee
FROM employees;

결과 (예시 데이터)

department employee next_employee
Sales Alice Bob
Sales Bob NULL
IT Charlie Dave
IT Dave NULL
  • 각 부서(department)별로 직원 목록을 입사일(hire_date) 기준으로 정렬하고, 다음 직원 이름을 표시

LEAD와 LAG 함수 비교

LEAD는 다음 행의 값을 가져오는 반면, LAG 함수는 이전 행의 값을 가져옵니다. 둘을 함께 사용하면 데이터의 변화 또는 연속성을 분석하기 쉼다.

예제 4: LEAD와 LAG 함수 비교

SELECT
    ID,
    VALUE,
    LAG(VALUE) OVER (ORDER BY ID) AS PREVIOUS_VALUE,
    VALUE AS CURRENT_VALUE,
    LEAD(VALUE) OVER (ORDER BY ID) AS NEXT_VALUE
FROM example_table;

결과

ID PREVIOUS_VALUE CURRENT_VALUE NEXT_VALUE
1 NULL A B
2 A B C
3 B C D
4 C D NULL

활용 사례

1. 연속 데이터 비교

주식 데이터를 분석할 때, 현재 주가와 다음 날의 주가를 비교해 상승 또는 하락을 확인할 수 있음

SELECT
    trade_date,
    stock_price,
    LEAD(stock_price) OVER (ORDER BY trade_date) AS next_day_price,
    LEAD(stock_price) OVER (ORDER BY trade_date) - stock_price AS price_difference
FROM stock_prices;

2. 고객 이탈 분석

고객 데이터를 시간 순으로 정렬하고, 다음 이벤트 또는 이탈 시점을 계산

SELECT
    customer_id,
    event_date,
    LEAD(event_date) OVER (PARTITION BY customer_id ORDER BY event_date) AS next_event_date
FROM customer_events;

이와 같이 LEAD 함수는 데이터 분석과 패턴 탐색에 강력한 도구임.
개발을 많이 해본 사람들도 아는 사람이 많이 없는 함수임.
그룹화, 정렬 및 기본값 설정을 적절히 활용하여 다양한 상황에서 데이터를 효과적으로 처리할 수 있음

반응형