ホームページ >データベース >mysql チュートリアル >ウィンドウ関数を使用してPostgreSQLで累積合計を計算する方法?
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
で分割され、amount
と circle_id
で並べ替えられた ea_year
列の累積合計が含まれます。 ea_month
以上がウィンドウ関数を使用してPostgreSQLで累積合計を計算する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。