개발/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_VALUE
는NULL
.
예제 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
함수는 데이터 분석과 패턴 탐색에 강력한 도구임.
개발을 많이 해본 사람들도 아는 사람이 많이 없는 함수임.
그룹화, 정렬 및 기본값 설정을 적절히 활용하여 다양한 상황에서 데이터를 효과적으로 처리할 수 있음
반응형