ホームページ >データベース >mysql チュートリアル >MySQL で累積合計を効率的に計算するにはどうすればよいですか?
MySQL の行の累積合計
時間ごとにグループ化された各 ID の累積合計を決定するには、一般的なアプローチが使用されます。 MySQLで。 MySQL の以前のバージョンには分析関数が存在しないため、相関サブクエリまたは MySQL ユーザー変数という 2 つの主要な方法が採用されています。
相関サブクエリ アプローチ
この戦略一致基準に基づいて各行の累積合計を計算するサブクエリが含まれます。ただし、大量のデータセットではリソースを大量に消費する可能性があります。
ユーザー変数アプローチ
より効率的な方法には、MySQL ユーザー変数と、ORDER BY 句を使用したラップされたクエリが含まれます。行処理順序を確保するため。次の手順は、このアプローチの概要を示しています。
このアプローチの例:
SELECT IF(@prev_id = c.id AND @prev_day = c.day , @cumtotal := @cumtotal + c.amount , @cumtotal := c.amount) AS cumulative_total , @prev_id := c.id AS `id` , @prev_day := c.day AS `day` , c.hr , c.amount AS `amount' FROM ( SELECT @prev_id := NULL , @prev_day := NULL , @cumtotal := 0 ) i JOIN ( SELECT id, day, hr, amount FROM ( // Original query with multiple joins and unions ) a LEFT JOIN ( // Unions on multiple tables ) b ON a.id = b.id ORDER BY 1, 2, 3 ) c
このアプローチにより、MySQL バージョン 8.0 より前のバージョンで累積合計を効率的に計算できます。ウィンドウ関数が導入されたとき。
以上がMySQL で累積合計を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。