ホームページ >データベース >mysql チュートリアル >PostgreSQL でウィンドウ関数を使用して累積合計を計算するにはどうすればよいですか?
PostgreSQL のウィンドウ関数を使用して累積和を計算する
質問:
ターゲット テーブルに挿入する必要がある財務データと累積合計を含むステージング テーブルがあります。ステージング テーブルの構造には次の列が含まれます:
ea_month
id
amount
ea_year
circle_id
が含まれている必要があります。 cum_amt
解決策:
これを行うには、PostgreSQL のウィンドウ関数機能を使用します。これにより、行の範囲に対して計算を実行できます。具体的には、 句を使用して、定義されたウィンドウ (この場合は 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>
PARTITION BY circle_id
に基づいてデータをグループに分割し、累積合計が円ごとに個別に計算されるようにします。
circle_id
ORDER BY ea_year, ea_month
cum_amt
式は、パーティションの先頭から現在の行までのすべての行を考慮して、各行の累積合計を計算します。
SUM
計算の正しいグループ化を保証するために、テーブルのペア (、、circle_id
) に一意のインデックスがあることを確認してください。これにより、同じ ea_year
、ea_month
、circle_id
を持つ行が常にソート順に一緒に表示されるようになります。 ea_year
ea_month
ウィンドウ関数手法を使用すると、各行の累積和を効率的に計算し、対象のテーブルに挿入できます。
以上がPostgreSQL でウィンドウ関数を使用して累積合計を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。