본문 바로가기
Language/MySQL

LEAD 함수, LAG 함수

by Mesut Özil 2024. 2. 4.

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