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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-12 17:31:50286ブラウズ

How to Calculate Cumulative Sums in PostgreSQL Using Window Functions?

PostgreSQLでの累積和の計算

データ処理では、特定のフィールドの累積合計または累計を計算する必要があることがよくあります。 PostgreSQL では、これはウィンドウ関数を使用して簡単に実現できます。

ウィンドウ関数の概要

ウィンドウ関数を使用すると、特定の条件に基づいてグループ化された行に対して計算を実行できます。この例では、行を circle_id でグループ化し、amount フィールドの累積合計を計算します。

累積合計を計算するクエリ

次のクエリは、累積合計を計算する方法を示しています。

<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 列ごとにグループ化します。
  • ORDER BY 句は、各パーティション内の行を ea_yearea_month で並べ替えます。
  • OVER 句は、各パーティションから現在の行までの行に sum() 関数を適用するウィンドウを定義します。
  • 結果の累積合計は cum_amt 列に格納されます。

日時データの処理

ea_year 列と ea_month 列が文字列として保存されている場合、クエリは時系列ではなくアルファベット順に並べ替えられます。正しく並べ替えるには、計算を実行する前に日付型に変換することを検討してください。

ピアを除外します

PostgreSQL 11 以降では、frame_exclusion オプションを使用して、ウィンドウ関数でのピアの処理方法を制御できます。これにより、特定の行を計算に含めたり除外したりできます。

これらの手順に従って、PostgreSQL で累積合計を効率的に計算し、データに関する貴重な洞察を得ることができます。

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

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