본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

89강 SQL 함수 정리 : PostgreSQL LAST_VALUE Function

by DoitSQL 2023. 1. 31.
728x90

 PostgreSQL 기초강의, PostgreSQL 기초강좌

89강 SQL 함수 정리 : PostgreSQL LAST_VALUE Function   

 

SQL 함수 정리 89강 시작합니다.

 

이번 시간에는

 PostgreSQL LAST_VALUE Function

에 대해서 알아보는 시간입니다.

 

이번 시간에는 PostgreSQL LAST_VALUE() 함수를 사용하여 결과 집합의 정렬된 파티션에서 마지막 값을 가져오는 방법을 배우게 됩니다.


PostgreSQL LAST_VALUE() 함수 소개  

LAST_VALUE() 함수는 결과 집합의 정렬된 파티션에서 마지막 값을 반환합니다.

 

LAST_VALUE() 함수의 구문은 다음과 같습니다:

LAST_VALUE ( expression )
OVER (
    [PARTITION BY partition_expression,... ]
    ORDER BY sort_expression [ASC | DESC],...
    [frame_clause]
)  

이 구문에서

 

expression   

식은 결과 집합의 정렬된 파티션에서 마지막 행의 값에 대해 계산되는 식, 열 또는 하위 쿼리일 수 있습니다. 개별 또는 단일 값을 반환해야 합니다.

 

PARTITION BY clause   

PARTITION BY를 사용하면 테이블 행이 LAST_VALUE() 함수가 적용되는 파티션으로 분할됩니다.

 

ORDER BY clause   

ORDER BY는 LAST_VALUE() 함수가 정의된 모든 파티션에서 테이블 행의 순서를 정렬합니다.

 

 frame_clause   

frame_clause는 LAST_VALUE() 함수가 적용되는 현재 파티션의 행의 부분 집합을 지정할 수 있습니다.


PostgreSQL LAST_VALUE() 함수 예제   

window function 튜토리얼에서 작성한 products table를 시연에 사용합니다:

시연 테이블

 

다음은 products table의 데이터 내용입니다:

products table


1) 결과 집합 예제에 PostgreSQL LAST_VALUE() 사용   

다음 예제에서는 LAST_VALUE() 함수를 사용하여 가장 높은 가격의 제품과 함께 모든 제품을 반환합니다:

 

SELECT 
    product_id,
    product_name,
    price,
    LAST_VALUE(product_name) 
    OVER(
        ORDER BY price
        RANGE BETWEEN 
            UNBOUNDED PRECEDING AND 
            UNBOUNDED FOLLOWING
    ) highest_price
FROM 
    products; 

결과

이 예제에서

  • LAST_VALUE() 함수에서 PARTITION BY 절을 건너뛰었기 때문에 LAST_VALUE() 함수는 전체 결과 집합을 단일 파티션으로 처리했습니다.
  • ORDER BY 조항은 제품을 낮은 가격에서 높은 가격으로 분류했다.
  • LAST_VALUE()가 결과 집합에서 마지막 행의 제품 이름을 선택했습니다.
  • RANGE BETWEEN으로 전체 행을 선택했습니다.

2) 파티션에 PostgreSQL LAST_VALUE() 사용 예제   

다음 예제에서는 LAST_VALUE() 함수를 사용하여 제품 그룹당 가장 비싼 제품과 함께 모든 제품을 반환합니다:

 

SELECT 
    product_id,
    product_name,
    group_id,
    price,
    LAST_VALUE(product_name) 
    OVER(
PARTITION BY group_id
        ORDER BY price
        RANGE BETWEEN 
            UNBOUNDED PRECEDING AND 
            UNBOUNDED FOLLOWING
    ) highest_price
FROM 
    products; 

결과

이 예제에서

  • PARTITION BY 절은 그룹 ID별로 행을 그룹 ID 1, 2, 3으로 지정된 세 개의 파티션으로 분할했습니다.
  • ORDER BY 절은 각 제품 그룹(또는 파티션)의 제품을 낮음에서 높음으로 정렬했습니다.
  • 무한 선행 절과 무한 추종 절 사이의 범위는 각 파티션의 첫 번째 행에서 시작하여 마지막 행에서 끝나는 프레임을 정의했습니다. (전체 선택)
  • LAST_VALUE() 함수는 각 파티션에 별도로 적용되었으며 각 파티션의 마지막 행의 제품 이름을 반환했습니다.

이번 강의에서는 PostgreSQL LAST_VALUE() 윈도우 함수를 사용하여 결과 세트의 순서 파티션에서 마지막 값을 반환하는 방법을 배웠습니다.

 

감사합니다.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글