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

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

DDD
リリース: 2025-01-12 17:20:44
オリジナル
938 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート