본문 바로가기
기타

[Postgresql] LAG() 직전행을 가져와주는 LAG 함수

by 개탱 2023. 9. 5.
728x90

 

 

PostgreSQL LAG 함수에 대한 설명과 예제

PostgreSQL에서 LAG 함수는 데이터베이스 테이블의 행 간에 이전 행의 값을 가져오는 윈도우 함수 중 하나입니다.

이 함수는 데이터 분석과 보고서 작성에서 매우 유용하게 사용됩니다.

아래에서 LAG 함수의 사용법과 몇 가지 다양한 예제를 살펴보겠습니다.

LAG 함수 기본 사용법

LAG 함수의 기본 사용법은 다음과 같습니다:

SELECT
  column_name,
  LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column) AS lagged_value
FROM
  table_name;
    

column_name은 현재 행의 값을 가져올 컬럼 이름을 나타내며, table_name은 데이터를 조회할 테이블 이름입니다.

 

partition_column은 파티션을 나누는 기준 컬럼을 지정하며, order_column은 순서를 정의할 컬럼 이름입니다.

 

 

또한, offset은 이전 행의 상대적인 위치를 나타내며, default_value는 이전 행이 없을 경우 사용할 기본값입니다.

offset은 비워두면 기본값이 1이며

default_value는 비워두면 기본값이 NULL입니다.

column_name

The column_name is evaluated against the row that comes before the current row at a specified offset. It can be a column, expression, or subquery. The column_name must return a single value, and cannot be a window function.

 

offset

The offset is a positive integer that specifies the number of rows which comes before the current row from which to access data. The offset can be an expression, subquery, or column. It defaults to 1 if you don’t specify it.

비워두면 Default 1

default_value

The LAG() function will return the default_value in case the offset goes beyond the scope of the partition. The function will return NULL if you omit the default_value.

비워두면 Default Null

 

 

 

 

예제 1: 이전 값 가져오기

아래 예제에서는 테이블 sales에서 각 월별 매출을 조회하고, 이전 월의 매출을 함께 표시합니다:

SELECT
  month,
  revenue,
  LAG(revenue) OVER (ORDER BY month) AS prev_month_revenue
FROM
  sales;
    

예제 2: 파티션을 기준으로 이전 값 가져오기

다음 예제에서는 테이블 orders에서 각 고객별 주문을 조회하고, 고객별로 주문된 상품의 이전 주문 수량을 함께 표시합니다:

SELECT
  customer_id,
  product_name,
  quantity,
  LAG(quantity) OVER (PARTITION BY customer_id ORDER BY order_date) AS prev_order_quantity
FROM
  orders;
    

예제 3: 직전 행의 값을 가져와서 더하기

다음 예제에서는 테이블 numbers에서 각 숫자를 조회하고, 직전 숫자의 값을 가져와 현재 숫자와 더합니다:

SELECT
  number,
  LAG(number, 1, 0) OVER (ORDER BY id) + number AS sum_with_previous
FROM
  numbers;
    

위 쿼리에서는 LAG 함수와 현재 숫자를 더해 직전 행의 값을 가져오고 더한 결과를 sum_with_previous로 표시합니다.

마무리

이상으로 PostgreSQL의 LAG 함수에 대한 기본 사용법과 다양한 예제를 살펴보았습니다.

LAG 함수는 데이터 분석, 비즈니스 인텔리전스, 보고서 작성 등 다양한 분야에서 유용하게 활용될 수 있습니다.

더 많은 정보와 사용 예제는 PostgreSQL 공식 문서나 관련 자료를 참고하시기 바랍니다.

PostgreSQL LAG 함수를 적재적소에 활용하여 데이터 분석을 더욱 효과적으로 수행하실 수 있습니다.

 

 

참조

 

댓글