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

MySQL で累計を効率的に計算するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-22 06:26:08272ブラウズ

How to Efficiently Calculate Running Totals in MySQL?

MySQL 累計: ユーザー変数を使用したソリューション

この記事の当初のタイトルは「MySQL での累計の計算」であり、以前の列値の累積合計を表示する列をテーブルに追加することを目的としています。ただし、提供された回答には、式でのユーザー変数の使用は現在非推奨であり、将来のバージョンでは削除されると記載されています。したがって、累計変数を初期化し、数学的計算を使用して単一のクエリを実行して目的の結果を得る、より単純なソリューションを提供します。

提供されるクエリは次のとおりです:

<code class="language-sql">SET @runtot:=0;
SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rt
FROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c
    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d
    ORDER  BY d) AS q1</code>

このクエリは、まず SET ステートメントを使用してユーザー変数 @runtot を 0 に初期化します。次に、サブクエリを実行して、注文テーブルから必要なデータを取得します。最後に、外側のクエリはサブクエリの結果を累計計算と組み合わせます。

結果のテーブルには、各行の列 c の累計を表す rt という追加の列が含まれます。このソリューションは、式での非推奨のユーザー変数の使用を回避し、単一のクエリ実行でより効率的なアプローチを提供します。

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

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