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

[SQL] LAG란?

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

SQL에서 LAG는 윈도우 함수(Window Function) 중 하나로, 현재 행 기준으로 이전 행의 값을 가져올 때 사용됩니다. 주로 데이터의 변화, 트렌드, 차이 등을 분석하는 데 유용합니다.


LAG의 기본 구조

LAG(컬럼명, [offset], [default]) OVER (PARTITION BY 분할_컬럼 ORDER BY 정렬_컬럼)

매개변수 설명:

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

간단한 예제

예제 테이블: 판매

판매ID 날짜 매출액

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

LAG를 사용해 이전 매출액 가져오기:

SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LAG(매출액) OVER (ORDER BY 날짜) AS 이전_매출액
FROM 판매;

결과:

판매ID 날짜 매출액 이전_매출액

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

LAG 활용 사례

1. 매출 변화량 계산

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

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

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

2. 고객 그룹별 이전 구매액 추적

예제 테이블: 구매

고객ID 날짜 구매액

A 2024-11-20 50
A 2024-11-22 80
B 2024-11-21 30
B 2024-11-23 60
SELECT 
    고객ID, 
    날짜, 
    구매액, 
    LAG(구매액) OVER (PARTITION BY 고객ID ORDER BY 날짜) AS 이전_구매액
FROM 구매;

고객ID 날짜 구매액 이전_구매액

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

3. 일정한 간격으로 데이터 가져오기

  • 두 번째 이전 값 가져오기:
SELECT 
    판매ID, 
    날짜, 
    매출액, 
    LAG(매출액, 2) OVER (ORDER BY 날짜) AS 두_번째_이전_매출액
FROM 판매;

판매ID 날짜 매출액 두_번째_이전_매출액

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

요약

LAG 함수는 이전 행의 데이터를 손쉽게 참조할 수 있어 데이터 간의 관계를 분석하거나 시간의 흐름에 따른 변화를 계산하는 데 유용합니다. 이를 활용하면 매출 트렌드, 고객 행동 패턴, 시간 기반 분석 등 다양한 작업을 효율적으로 처리할 수 있습니다! 🚀

반응형

댓글