ホームページ >データベース >mysql チュートリアル >ウィンドウ関数を使用してPostgreSQLで累積合計を計算する方法?

ウィンドウ関数を使用してPostgreSQLで累積合計を計算する方法?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-12 17:39:441005ブラウズ

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_year 列で並べ替えられ、ea_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 で分割され、amountcircle_id で並べ替えられた ea_year 列の累積合計が含まれます。 ea_month

以上がウィンドウ関数を使用してPostgreSQLで累積合計を計算する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。