[TIL] 내일배움캠프 75일차_[MySQL] LEAD 함수란?
👀Today I Learn
LEAD 함수란?
- MySQL의 LEAD() 함수는 윈도우 함수(Window Function) 중 하나로, 특정 행을 기준으로 뒤에 위치한 행(row offset)의 값을 조회하는 함수
- 주로 시계열 데이터 분석, 순차적 데이터 처리, 또는 다음 값과 현재 값을 비교할 때 유용하게 사용됨
LEAD 함수 문법
LEAD(column_name, offset, default_value) OVER (
PARTITION BY partition_column
ORDER BY order_column
)
column_name
: 값을 가져올 대상 컬럼offset
(선택 사항): 현재 행에서 몇 개 뒤의 행 값을 가져올지 지정(기본값: 1)default_value
(선택 사항): 가져올 행이 없을 경우 사용할 기본값(기본값: NULL)PARTITION BY partition_column
(선택 사항): 그룹별(PARTITION BY)로 나누어 LEAD()를 실행할 수 있음ORDER BY order_column
: 데이터를 정렬하는 기준
LEAD() 함수 예제
1. 기본적인 사용법
-
주문 테이블에서 다음 주문 금액 조회하기
-
아래와 같은 orders 테이블이 있다고 가정
CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT, order_date DATE, amount DECIMAL(10,2) ); INSERT INTO orders (customer_id, order_date, amount) VALUES (1, '2024-01-01', 100.00), (1, '2024-01-05', 200.00), (2, '2024-01-10', 150.00), (2, '2024-01-15', 250.00), (3, '2024-02-01', 300.00);
-
-
다음 SQL을 실행하면, 각 주문 행에서 다음 주문 금액을 가져올 수 있음
SELECT id, customer_id, order_date, amount, LEAD(amount, 1, 0) OVER (PARTITION BY customer_id ORDER BY order_date) AS next_amount FROM orders
-
실행 결과
id customer_id order_date amount next_amount 1 1 2024-01-01 100.00 200.00 2 1 2024-01-05 200.00 NULL 3 2 2024-01-10 150.00 250.00 4 2 2024-01-15 250.00 NULL 5 3 2024-02-01 300.00 NULL - LEAD(amount, 1, 0)을 사용하여 다음 행의 값이 없을 경우 0을 반환하도록 설정했습니다.
2. LEAD()를 활용한 트렌드 분석
-
LEAD()를 활용하여 현재 주문 금액과 다음 주문 금액을 비교하여 트렌드를 분석할 수도 있음
SELECT id, customer_id, order_date, amount, LEAD(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS next_amount, CASE WHEN LEAD(amount) OVER (PARTITION BY customer_id ORDER BY order_date) > amount THEN '증가' WHEN LEAD(amount) OVER (PARTITION BY customer_id ORDER BY order_date) < amount THEN '감소' ELSE '유지' END AS trend FROM orders
-
실행 결과
id customer_id order_date amount next_amount trend 1 1 2024-01-01 100.00 200.00 증가 2 1 2024-01-05 200.00 NULL 유지 3 2 2024-01-10 150.00 250.00 증가 4 2 2024-01-15 250.00 NULL 유지 5 3 2024-02-01 300.00 NULL 유지 - CASE 문을 활용하여 현재 금액과 다음 주문 금액을 비교하여 트렌드(증가, 감소, 유지)를 분석할 수 있음
LEAD() 함수 정리
- ✅ LEAD() 함수는 현재 행을 기준으로 다음 행의 값을 조회하는 데 사용됨
- ✅ PARTITION BY를 사용하면 고객별, 카테고리별 등 그룹별로 분석할 수 있음
- ✅ ORDER BY를 사용하여 정렬 순서를 명확하게 지정해야 올바른 결과를 얻을 수 있음
- ✅ LEAD()를 활용하면 트렌드 분석, 비교 분석 등 다양한 데이터 분석에 유용
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 327
- SQL 코드카타 109
- 자격증 공부
- TIL 작성
회고
SQL 코드카타를 풀다가 LEAD라는 함수가 나와서 공부를 해봤다. 아직도 모르는 함수가 가득해. 언제쯤 검색없이 문제를 해결할 수 있는지 몰라🤔 오늘 공부는 조금 일찍 마무리~! 오후에는 조금 쉬고 내일부터 열심히 달려야겠다.🏃♂️
댓글남기기