ホームページ >データベース >mysql チュートリアル >MySQL で累積合計列を効率的に生成するにはどうすればよいですか?

MySQL で累積合計列を効率的に生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 10:01:09440ブラウズ

How to Efficiently Generate a Cumulative Sum Column in MySQL?

MySQL での累積合計の計算: 2 つのアプローチ

このガイドでは、MySQL データベース内で累積合計列を生成するための 2 つの効果的な方法について詳しく説明します。

方法 1: 相関サブクエリの利用

このアプローチでは、相関サブクエリを使用して累積合計を計算します。

<code class="language-sql">SELECT t.id,
       t.count,
       (SELECT SUM(x.count)
          FROM TABLE x
         WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id;</code>

AS 句内に埋め込まれた相関サブクエリは、各行の累積合計を動的に計算します。 テーブルの先頭から現在の行の count までの id 値を合計します。

方法 2: MySQL 変数を活用する

MySQL 変数は、累積合計計算の代替方法を提供します。

<code class="language-sql">SELECT t.id,
       t.count,
       @running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id;</code>

このメソッドは、クロス結合を使用して MySQL 変数 @running_total を 0 に初期化します。 クエリが TABLE t の各行を反復処理するにつれて、@running_totalcount 値を累積し、累積合計を生成します。

重要な考慮事項:

  • MySQL 変数の使用はデータベース固有であり、他のデータベース システムとは互換性がない場合があります。
  • どちらの方法でも、累積合計を正確に計算するには ORDER BY 句が必要です。 行の順序によって合計シーケンスが決まります。

以上がMySQL で累積合計列を効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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