LAG() 직전행을 가져와주는 LAG 함수
postgresql
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 함수를 적재적소에 활용하여 데이터 분석을 더욱 효과적으로 수행하실 수 있습니다.
참조
- Postgrsql LAG tutorial
https://www.postgresqltutorial.com/postgresql-window-function/postgresql-lag-function/
'Dev > [기타]개발' 카테고리의 다른 글
[NEXUS][SONATYPE] Nexus 란? (1) | 2024.06.09 |
---|---|
[Postgresql] LEAD() 다음행을 가져와주는 LEAD 함수 (0) | 2023.09.06 |
HEROKU | at=error code=H10 desc="App crashed" method=GET path="/" host (0) | 2023.08.06 |
(전체코드 추가) 꼬맨틀 매크로 만들기 - [개탱][javascript] (0) | 2023.01.25 |
java Spring 잘되던 API 갑자기 CORS 오류 삽질 (0) | 2023.01.17 |