LoginSignup
0
0

More than 5 years have passed since last update.

[書き途中]SQL練習問題詰め合わせ

Posted at

-商品ごとに、売上数量の一番多い担当者を取得し、商品 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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0