>데이터 베이스 >MySQL 튜토리얼 >창 함수를 사용하여 PostgreSQL에서 누적 합계를 효율적으로 계산하는 방법은 무엇입니까?

창 함수를 사용하여 PostgreSQL에서 누적 합계를 효율적으로 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-12 17:20:44997검색

How to Efficiently Calculate Cumulative Sum in PostgreSQL Using Window Functions?

PostgreSQL에서 누적 합계 계산

PostgreSQL의 창 함수를 사용하여 스테이징 테이블의 데이터를 대상 테이블로 업데이트하는 필드의 누적 합계를 효율적으로 계산합니다. 주어진 문제에서는 다른 속성을 유지하면서 "circle_id"를 기반으로 "amount" 필드의 누적 금액을 찾아야 합니다.

이렇게 하려면 다음 단계를 따르세요.

  1. 데이터 분할: PARTITION BY 절을 사용하여 "circle_id"를 기반으로 파티션을 만듭니다. 이렇게 하면 각 원이 개별적으로 계산됩니다.
  2. 데이터 정렬: ORDER BY 절을 지정하여 "ea_year" 및 "ea_month"(또는 파생된 "the_date" 열)를 기준으로 행을 정렬합니다. 누적 합계가 계산되는 순서를 결정합니다.
  3. 누적 합계 계산: OVER 절을 사용하여 SUM() 집계 함수를 적용합니다. 그러면 각 파티션 내 및 현재 행 이전 행에 대한 "금액" 필드의 누적 합계가 계산됩니다.

생성된 쿼리:

<code class="language-sql">SELECT ea_month, id, amount, ea_year, circle_id,
     sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt
FROM tbl
ORDER BY circle_id, ea_year, ea_month;</code>

이 쿼리는 지정된 정렬 순서에 따라 각 행에 대해 누적 금액("cum_amt")이 계산되는 필수 대상 테이블을 생성합니다.

위 내용은 창 함수를 사용하여 PostgreSQL에서 누적 합계를 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.