분석함수인 LAG와 LEAD는 주로 데이터베이스나 SQL에서 사용되는 윈도우 함수(또는 분석 함수)입니다. 이들 함수는 특히 시계열 데이터와 같이 이전 또는 다음 행의 값을 조회하고 싶을 때 유용하게 사용됩니다.
LAG 함수
LAG 함수는 현재 행 이전의 특정 열의 값을 가져옵니다. 함수의 구문은 다음과 같습니다.
LAG(column, offset, default) OVER (PARTITION BY partition_column ORDER BY order_column)
column: 이전 값을 가져올 대상 열을 지정합니다.
offset: 가져올 이전 행의 거리를 나타냅니다. 기본값은 1이며, 1이면 바로 이전 행의 값을 가져옵니다.
default: 만약 이전 값이 없을 경우 반환할 기본값을 지정합니다. 선택적 매개변수입니다.
LAG 함수는 OVER 절과 함께 사용되며, PARTITION BY와 ORDER BY 구문을 사용하여 데이터를 파티션화하고 정렬합니다. 이를 통해 각 파티션 내에서 이전 값을 가져오거나 정렬 순서에 따라 이전 값을 가져올 수 있습니다.
LEAD 함수
LEAD 함수는 현재 행 다음의 특정 열의 값을 가져옵니다. 함수의 구문은 다음과 같습니다:
LEAD(column, offset, default) OVER (PARTITION BY partition_column ORDER BY order_column)
column: 다음 값을 가져올 대상 열을 지정합니다.
offset: 가져올 다음 행의 거리를 나타냅니다. 기본값은 1이며, 1이면 바로 다음 행의 값을 가져옵니다.
default: 만약 다음 값이 없을 경우 반환할 기본값을 지정합니다. 선택적 매개변수입니다.
LEAD 함수도 OVER 절과 함께 사용되며, PARTITION BY와 ORDER BY 구문을 사용하여 데이터를 파티션화하고 정렬합니다.
주로 사용되는 범주
시계열 데이터 분석: 시계열 데이터에서 현재 값의 이전 또는 다음 값을 조회하여 시계열 추세를 파악하거나 패턴을 발견하는 데 사용됩니다.
비교 및 변화 감지: 현재 값과 이전/다음 값을 비교하여 변화를 감지하거나 이벤트 발생을 추적하는 데 사용됩니다.
순위 계산: 정렬된 데이터에서 이전 값이나 다음 값을 활용하여 순위를 계산하는 데 활용할 수 있습니다.
이동 평균 계산: 시계열 데이터의 이동 평균을 계산할 때 이전 또는 다음 값들을 사용하여 계산하는 데 도움이 됩니다.
예를 들어, 주식 가격 데이터에서 LAG나 LEAD 함수를 사용하여 이전 거래일의 가격과 다음 거래일의 가격을 가져와서 변동성을 계산하거나 추세를 파악하는 등의 작업을 할 수 있습니다.
사용 예제
LAG 함수 예제
샘플 데이터:
| 날짜 | 주식가격 |
|------------|---------|
| 2023-07-20 | 1000 |
| 2023-07-21 | 1050 |
| 2023-07-22 | 1100 |
| 2023-07-23 | 1080 |
| 2023-07-24 | 1120 |
SQL 코드:
SELECT
날짜,
주식가격,
LAG(주식가격, 1) OVER (ORDER BY 날짜) AS 이전_주식가격
FROM
주식데이터;
결과:
| 날짜 | 주식가격 | 이전_주식가격 |
|------------|---------|--------------|
| 2023-07-20 | 1000 | NULL |
| 2023-07-21 | 1050 | 1000 |
| 2023-07-22 | 1100 | 1050 |
| 2023-07-23 | 1080 | 1100 |
| 2023-07-24 | 1120 | 1080 |
LEAD 함수 예제:
샘플 데이터:
| 날짜 | 주식가격 |
|------------|---------|
| 2023-07-20 | 1000 |
| 2023-07-21 | 1050 |
| 2023-07-22 | 1100 |
| 2023-07-23 | 1080 |
| 2023-07-24 | 1120 |
SQL 코드:
SELECT
날짜,
주식가격,
LEAD(주식가격, 1) OVER (ORDER BY 날짜) AS 다음_주식가격
FROM
주식데이터;
결과:
| 날짜 | 주식가격 | 다음_주식가격 |
|------------|---------|--------------|
| 2023-07-20 | 1000 | 1050 |
| 2023-07-21 | 1050 | 1100 |
| 2023-07-22 | 1100 | 1080 |
| 2023-07-23 | 1080 | 1120 |
| 2023-07-24 | 1120 | NULL |
LAG와 LEAD 함수를 함께 사용하여 시계열 데이터의 변동성 계산 예제:
샘플 데이터:
| 날짜 | 주식가격 |
|------------|---------|
| 2023-07-20 | 1000 |
| 2023-07-21 | 1050 |
| 2023-07-22 | 1100 |
| 2023-07-23 | 1080 |
| 2023-07-24 | 1120 |
SQL 코드:
SELECT
날짜,
주식가격,
주식가격 - LAG(주식가격, 1) OVER (ORDER BY 날짜) AS 변동성
FROM
주식데이터;
결과:
| 날짜 | 주식가격 | 변동성 |
|------------|---------|--------|
| 2023-07-20 | 1000 | NULL |
| 2023-07-21 | 1050 | 50 |
| 2023-07-22 | 1100 | 50 |
| 2023-07-23 | 1080 | -20 |
| 2023-07-24 | 1120 | 40 |
위의 샘플 코드와 결과를 통해 LAG와 LEAD 함수가 어떻게 사용되며 어떤 결과를 얻을 수 있는지 이해하실 수 있을 것입니다. 실제 데이터에서는 이러한 함수들을 조합하여 다양한 분석과 추이 파악에 활용하게 됩니다.
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'Big Data > Database' 카테고리의 다른 글
MySQL에 csv 파일 데이터 적재 (0) | 2023.08.02 |
---|---|
MySQL에서 UnixTime (0) | 2023.07.31 |
WINDOW 절의 사용 (0) | 2023.07.27 |
분석 함수(Analytic Functions) (0) | 2023.07.27 |
싱글 쿼터('), 더블 쿼터('') (0) | 2023.07.27 |