(윈도우 함수) 이전(lag)/이후(lead) 값 가져오는 함수 정리

dorongpark·4일 전
0

해커랭크(sql)

목록 보기
23/23
  1. lag, lead 함수의 정의를 배운다
  2. 둘의 차이점과 실제 쿼리 예시에 대해 배운다

1. lag, lead 함수

(Window Function) 중 하나로, 현재 행의 이전 또는 다음 행의 값을 가져오는 데 사용됩니다. 주로 시간 순서가 있는 데이터에서 이전 값이나 다음 값을 참조해야 할 때 유용합니다. 이 두 함수는 데이터를 시간적, 순차적으로 처리하거나 비교할 때 매우 강력합니다.

1) lag

LAG() 함수는 현재 행보다 이전 행의 값을 반환합니다. 기본적으로는 특정 열에서 이전 행의 데이터를 가져옵니다.

  • 형태: LAG(expression, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column)
    - expression: 이전 행에서 가져올 열의 이름 또는 계산식
    - offset: 몇 번째 이전 행을 가져올지 지정하는 값 (기본값은 1, 즉 바로 이전 행)
    - default_value: 이전 행이 없을 때 반환할 기본 값 (옵션)
    - PARTITION BY: 데이터를 그룹화할 기준 열 (옵션)
    - ORDER BY: 순서대로 정렬할 기준 열
  • 예시
SELECT 
    employee_id, 
    salary,
    LAG(salary, 1) OVER (ORDER BY month) AS previous_month_salary
   
FROM employees
ORDER BY month;

2) lead

LEAD() 함수는 현재 행보다 다음 행의 값을 반환합니다. LAG()와는 반대로, 다음 행에 대한 정보를 가져옵니다.

  • 형태: LEAD(expression, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column)
    - expression: 이전 행에서 가져올 열의 이름 또는 계산식
    - offset: 몇 번째 이전 행을 가져올지 지정하는 값 (기본값은 1, 즉 바로 다음 행)
    - default_value: 이전 행이 없을 때 반환할 기본 값 (옵션)
    - PARTITION BY: 데이터를 그룹화할 기준 열 (옵션)
    - ORDER BY: 순서대로 정렬할 기준 열
  • 예시
select
	employee_id,
    salary,
    lead(salary) over(order by month) as next_month_salary
from
	employee


  • 예시 2
SELECT 
    month, 
    sales, 
    LAG(sales, 1) OVER (ORDER BY month) AS previous_sales,
    LEAD(sales, 1) OVER (ORDER BY month) AS next_sales
FROM sales_data
ORDER BY month;

profile
야 너도 분석 할수 있어

0개의 댓글