LEAD 함수, LAG 함수
1. LEAD()
- LEAD(): 현재 행을 기준으로 다음 행의 값 반환
LEAD(expression, offset, default) OVER (partition_clause ORDER BY order_clause)
- expression: 가져올 값의 열이나 식
- offset(선택적): 가져올 행의 상대적인 위치, 기본값=1로 다음 행을 의미 (2인 경우 2번째 다음 행을 의미)
- default(선택적): LEAD 함수가 더 이상 행이 없는 경우 반환할 기본값 (미지정 시 NULL 반환)
- partition_clause(선택적): 데이터를 파티션으로 나누는 데 사용 ('PARTITION BY'를 추가하여 category별 계산)
- order_clause: 데이터 정렬 지정에 사용
# [LEAD]
SELECT
category,
value,
LEAD(value, 1, '-') OVER (PARTITION BY category ORDER BY value) AS next_value
FROM example_data;
# 결과
+----------+-------+------------+
| category | value | next_value |
+----------+-------+------------+
| A | 10 | 20 |
| A | 20 | 30 |
| A | 30 | - |
| B | 5 | 15 |
| B | 15 | - |
+----------+-------+------------+
2. LAG()
- LAG(): 현재 행을 기준으로 이전 행의 값 반환
LAG(expression, offset, default) OVER (partition_clause ORDER BY order_clause)
- expression: 가져올 값의 열이나 식
- offset(선택적): 가져올 행의 상대적인 위치, 기본값=1로 이전 행을 의미 (2인 경우 2번째 다음 행을 의미)
- default(선택적): LAG 함수의 행이 없는 경우 반환할 기본값 (미지정 시 NULL 반환)
- partition_clause(선택적): 데이터를 파티션으로 나누는 데 사용
- order_clause: 데이터 정렬 지정에 사용
SELECT
category,
value,
LAG(value) OVER () AS prev_value
FROM example_data;
# 결과
+----------+-------+------------+
| category | value | prev_value |
+----------+-------+------------+
| A | 10 | NULL |
| A | 20 | 10 |
| A | 30 | 20 |
| B | 5 | 30 |
| B | 15 | 5 |
+----------+-------+------------+
본 게시글은 ChatGPT의 도움을 받아 작성하였습니다.
'Language > MySQL' 카테고리의 다른 글
EXISTS 연산자 (0) | 2024.02.02 |
---|---|
이동 평균, 누적 합계 (2) | 2024.01.31 |
SQL 순위 함수 (0) | 2024.01.28 |
SQL 집계 함수 (0) | 2024.01.26 |
SQL 일반 함수 (0) | 2024.01.22 |