- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLで期間中の最大個数を担当者毎に集計したい)
MySQLで期間中の最大個数を担当者毎に集計する方法
このQ&Aのポイント
- MySQLで期間中の最大個数を担当者毎に集計する方法について説明します。
- 顧客が要望する期間に望む個数だけ、担当者が商品を貸し出す業務を記録するために、テーブルをMySQLで作成します。
- 月末締めをするため、その月内で最も要望が重なった期間に貸し出した個数の合計を、担当者毎に求める方法を説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
なかなか骨のある課題でしたが、下記のSQLでいけると思います。 version 5.5.8 で確認しました。 SELECT man, MAX(sum_amount) AS ans FROM ( SELECT man, (SELECT SUM(amt) FROM t_lental b WHERE start_date <= target_date AND end_date >= target_date AND a.man = b.man) AS sum_amount FROM ( SELECT DISTINCT man, start_date AS target_date FROM t_lental UNION SELECT DISTINCT man, end_date AS target_date FROM t_lental ) a ) c GROUP BY man; 別名aのサブクエリーで担当者ごとの全ての開始日と終了日の集合を取得しています。 その一つ外側で、各担当者ごとの全ての開始日と終了日について合計の個数を算出しています。 そして、一番外側で担当者ごとの合計の個数が一番多いものを抽出しています。
お礼
早速回答いただきまして、有難うございます。 こちらでもテストしてみまして、希望通りの結果となりました。 お客様からは月をまたがって要望が来る場合もありますし、あるいは月末だけでなく上旬や中旬、下旬の状況といったように折々に集計したいという場合もありますので、お教えいただいたクエリに、指定する任意の期間とオーバーラップしているデータを絞り込む条件を追加してテストしてみまして、こちらも希望通りとなりました。 大変助かりました。重ねて感謝申し上げます。