ホームページ > データベース > mysql チュートリアル > MySQL で複数のテーブルを結合するときに集計値を正しく SUM する方法は?

MySQL で複数のテーブルを結合するときに集計値を正しく SUM する方法は?

Susan Sarandon
リリース: 2025-01-19 14:11:10
オリジナル
532 人が閲覧しました

How to Correctly SUM Aggregate Values When Joining Multiple Tables in MySQL?

MYSQL での SUM によるテーブルの結合の問題

SUM 集計によるテーブルの結合は、複雑さを引き起こす可能性があります。クエリの結果が正しくない問題に対処するために、問題を詳しく調べて解決策を探ってみましょう。

指定されたクエリの主な懸念事項は、外積が生じる複数の結合です。他のテーブル内の一致する行の数を合計に乗算すると、誤った結果が生じます。この問題を修正するには、SUM 操作をサブクエリに再配置します。

両方の SUM 集計にサブクエリを組み込んだ最適化されたクエリを次に示します。

SELECT last_name, first_name, DATE_FORMAT(LEAST(mil_date, tm_date), '%m/%d/%y') AS dates, total, minutes
FROM bhds_teachers AS i
LEFT JOIN (
    SELECT ds_id, YEARWEEK(mil_date) AS week, MIN(mil_date) AS mil_date, SUM(drive_time) AS minutes
    FROM bhds_mileage
    WHERE mil_date BETWEEN '2016-04-11' AND  '2016-04-30'
    AND bhds_mileage.ds_id = 5
    GROUP BY ds_id, week) AS m 
ON m.ds_id = i.ds_id
LEFT JOIN (
    SELECT ds_id, YEARWEEK(tm_date) AS week, MIN(tm_date) AS tm_date, SUM(tm_hours) AS total
    WHERE tm_date BETWEEN '2016-04-11' AND '2016-04-30' AND bhds_timecard.ds_id = 5
    GROUP BY ds_id, week) AS t 
ON t.ds_id = i.ds_id AND t.week = m.week;
ログイン後にコピー

このクエリは、分と合計の両方にサブクエリを利用します。合計を計算し、積間の乗算を回避することで正確な結果を保証します。また、両方のサブクエリの時間枠を調整して、一貫したデータ取得を保証します。サブクエリを使用してクエリをリファクタリングすることで、複数の結合と SUM 集計によって引き起こされる問題を効果的に解決します。

以上がMySQL で複数のテーブルを結合するときに集計値を正しく SUM する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート