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

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

Barbara Streisand
Barbara Streisand원래의
2025-01-12 17:39:44994검색

How to Calculate Cumulative Sum in PostgreSQL Using Window Functions?

PostgreSQL에서 누적 합계 계산

PostgreSQL 데이터베이스에서는 창 함수를 사용하여 임시 테이블에서 필드의 누적 합계(또는 누계)를 계산하고 결과를 대상 테이블로 전송할 수 있습니다. 창 함수를 사용하면 파티션(이 경우 circle_id 열을 기반으로 생성된 파티션)의 일련의 행을 기반으로 계산을 수행할 수 있습니다.

창 함수 구문

여기서 사용된 윈도우 함수 구문은 다음과 같습니다.

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

이 창 함수는 circle_id 열로 분할됩니다. 즉, 각 circle_id에 대해 누적 합계가 별도로 계산됩니다. 각 파티션 내에서 행은 ea_yearea_month 열을 기준으로 정렬되어 각 circle월에 대해 가장 빠른 것부터 가장 늦은 것까지 누적 합계가 계산됩니다.

예시 쿼리

제공된 테이블 구조에 따라 다음 쿼리는 필요한 결과를 생성합니다.

<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>

설명

이 쿼리는 tbl 테이블에서 해당 열을 추출하고 각 circle_id에 대한 누적 합계를 계산합니다. OVER 절은 창 함수의 분할 및 순서를 지정하여 각 circle에 대해 누적 합계가 올바르게 계산되도록 합니다.

중요사항

    원하는 결과를 얻으려면
  • OVER 절 내 ORDER BY 절의 순서가 중요합니다.
  • 테이블에 날짜 값이 저장되어 있으면 ORDER BY 절에서 직접 사용할 수 있습니다. 그러나 월의 문자열 표현을 사용하는 경우 to_date() 함수를 사용하여 이를 날짜 값으로 변환해야 할 수도 있습니다.
  • 대상 테이블의 결과 cum_amt 열에는 amount으로 분할되고 circle_idea_year으로 정렬된 ea_month 열의 누적 합계가 포함됩니다.

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

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