-商品ごとに、売上数量の一番多い担当者を取得し、商品 ID、商品名、該当の担当者 ID、担当者名を表示せよ
sample
SELECT
Product_M.Product_ID,
Product_M.Product_name,
ISNULL(担当者Product_毎売上.担当者ID, 0) AS 担当者ID,
ISNULL(担当者M.担当者name, '(該当なし)') AS 担当者name,
ISNULL(担当者Product_毎売上.売上数量, 0 ) AS 売上数量 -- 問題に指定はないが参考情報として表示
FROM
Product_M
LEFT JOIN (
-- Product_毎の最大数を求めるサブクエリ
SELECT
担当者Product_毎売上temp.Product_ID,
MAX(担当者Product_毎売上temp.売上数量) 売上数量最大
FROM
(
-- Product_と担当者毎の売上数量の合計を求めるサブクエリ
SELECT
売上データ.担当者ID,
売上データ.Product_ID,
SUM(売上データ.数量) 売上数量
FROM
売上データ
GROUP BY
売上データ.担当者ID,
売上データ.Product_ID
) 担当者Product_毎売上temp
GROUP BY
担当者Product_毎売上temp.Product_ID
) Product_毎売上最大
ON Product_M.Product_ID = Product_毎売上最大.Product_ID
LEFT JOIN (
-- Product_と担当者毎の売上数量の合計を求めるサブクエリ
SELECT
売上データ.担当者ID,
売上データ.Product_ID,
SUM(売上データ.数量) 売上数量
FROM
売上データ
GROUP BY
売上データ.担当者ID,
売上データ.Product_ID
) 担当者Product_毎売上
ON Product_M.Product_ID = 担当者Product_毎売上.Product_ID
AND Product_毎売上最大.売上数量最大 = 担当者Product_毎売上.売上数量
LEFT JOIN 担当者M
ON 担当者Product_毎売上.担当者ID = 担当者M.担当者ID
ORDER BY
Product_M.Product_ID