반응형
SQL의 LEAD 함수란?
LEAD는 SQL의 윈도우 함수(Window Function) 중 하나로, 현재 행 기준으로 다음 행의 값을 가져올 때 사용됩니다. 주로 데이터의 흐름이나 변화 패턴, 비교 분석에 유용합니다.
LEAD 함수 기본 구조
LEAD(컬럼명, [offset], [default]) OVER (PARTITION BY 그룹_컬럼 ORDER BY 정렬_컬럼)
매개변수 설명:
- 컬럼명: 다음 행의 값을 가져올 컬럼.
- offset (선택 사항): 다음 행의 상대적 거리 (기본값: 1).
- 1: 바로 다음 행.
- 2: 두 번째 이후 행.
- default (선택 사항): 다음 행이 없을 경우 반환할 기본값 (기본값: NULL).
- 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 함수는 데이터 흐름을 분석하거나 미래 데이터를 참조해야 할 때 강력한 도구입니다! 😊
반응형
'🖥️ IT, 컴퓨터 > 🏁 SQL・빅쿼리' 카테고리의 다른 글
[SQL] DATE_TRUNC이란? (0) | 2024.11.24 |
---|---|
[SQL] CTE(Common Table Expressions)란? (0) | 2024.11.24 |
[SQL] LAG란? (0) | 2024.11.24 |
[SQL] 윈도우 함수(Window Function)란? (0) | 2024.11.24 |
[SQL] INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 차이점 (0) | 2024.11.24 |
댓글