🖥️ IT, 컴퓨터/🏁 SQL・빅쿼리

[SQL] LEAD 함수란?

김 홍시 2024. 11. 24.
반응형

SQL의 LEAD 함수란?

LEAD는 SQL의 윈도우 함수(Window Function) 중 하나로, 현재 행 기준으로 다음 행의 값을 가져올 때 사용됩니다. 주로 데이터의 흐름이나 변화 패턴, 비교 분석에 유용합니다.


LEAD 함수 기본 구조

LEAD(컬럼명, [offset], [default]) OVER (PARTITION BY 그룹_컬럼 ORDER BY 정렬_컬럼)

매개변수 설명:

  1. 컬럼명: 다음 행의 값을 가져올 컬럼.
  2. offset (선택 사항): 다음 행의 상대적 거리 (기본값: 1).
    • 1: 바로 다음 행.
    • 2: 두 번째 이후 행.
  3. default (선택 사항): 다음 행이 없을 경우 반환할 기본값 (기본값: NULL).
  4. OVER: 윈도우 함수의 작업 범위를 지정.
    • PARTITION BY: 데이터를 그룹화하여 각각의 그룹 내에서 연산.
    • ORDER BY: 연산을 수행할 순서를 정의.

LEAD 함수 예제

예제 테이블: 판매

판매ID 날짜 매출액

1 2024-11-20 100
2 2024-11-21 200
3 2024-11-22 150
4 2024-11-23 300

1. 기본 사용

SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LEAD(매출액) OVER (ORDER BY 날짜) AS 다음_매출액
FROM 판매;

판매ID 날짜 매출액 다음_매출액

1 2024-11-20 100 200
2 2024-11-21 200 150
3 2024-11-22 150 300
4 2024-11-23 300 NULL

2. offset 사용: 두 번째 이후 값 가져오기

SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LEAD(매출액, 2) OVER (ORDER BY 날짜) AS 두_번째_다음_매출액
FROM 판매;

판매ID 날짜 매출액 두_번째_다음_매출액

1 2024-11-20 100 150
2 2024-11-21 200 300
3 2024-11-22 150 NULL
4 2024-11-23 300 NULL

3. default 사용: 기본값 설정

다음 행이 없을 경우 NULL 대신 특정 값을 반환하도록 설정.

SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LEAD(매출액, 1, 0) OVER (ORDER BY 날짜) AS 다음_매출액_기본값
FROM 판매;

판매ID 날짜 매출액 다음_매출액_기본값

1 2024-11-20 100 200
2 2024-11-21 200 150
3 2024-11-22 150 300
4 2024-11-23 300 0

PARTITION BY 사용 예제

PARTITION BY를 사용하여 데이터를 그룹화하고, 그룹별로 연산 수행.

예제 테이블: 구매

고객ID 날짜 구매액

A 2024-11-20 50
A 2024-11-22 80
B 2024-11-21 30
B 2024-11-23 60

쿼리:

SELECT 
    고객ID, 
    날짜, 
    구매액, 
    LEAD(구매액) OVER (PARTITION BY 고객ID ORDER BY 날짜) AS 다음_구매액
FROM 구매;

고객ID 날짜 구매액 다음_구매액

A 2024-11-20 50 80
A 2024-11-22 80 NULL
B 2024-11-21 30 60
B 2024-11-23 60 NULL

LEAD 함수의 활용 사례

1. 시간 기반 데이터 비교

두 날짜 간의 매출 변화를 계산:

SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LEAD(매출액) OVER (ORDER BY 날짜) - 매출액 AS 매출_변화량
FROM 판매;

판매ID 날짜 매출액 매출_변화량

1 2024-11-20 100 100
2 2024-11-21 200 -50
3 2024-11-22 150 150
4 2024-11-23 300 NULL

2. 이벤트 간 차이 계산

고객의 구매 주기를 계산:

SELECT 
    고객ID, 
    날짜, 
    LEAD(날짜) OVER (PARTITION BY 고객ID ORDER BY 날짜) - 날짜 AS 구매_주기
FROM 구매;

고객ID 날짜 구매_주기

A 2024-11-20 2 days
A 2024-11-22 NULL
B 2024-11-21 2 days
B 2024-11-23 NULL

LEAD와 LAG의 차이

  • LEAD: 현재 행 기준으로 다음 행의 값을 가져옴.
  • LAG: 현재 행 기준으로 이전 행의 값을 가져옴.

함수 기준 값

LEAD 다음 행
LAG 이전 행

LEAD의 요약

  • 목적: 현재 행 기준으로 다음 행의 데이터를 참조.
  • 주요 활용:
    • 데이터 변화 분석 (예: 매출 증가/감소).
    • 시간 간격 분석 (예: 이벤트 간의 시간 차).
    • 데이터 비교 및 트렌드 파악.
  • 장점: 시간 기반 데이터 흐름이나 비교 분석에 유용하며, PARTITION BY와 함께 그룹별 분석도 가능.

LEAD 함수는 데이터 흐름을 분석하거나 미래 데이터를 참조해야 할 때 강력한 도구입니다! 😊

반응형

댓글