Согласно схеме, таблица Orders
имеет следующие столбцы:
OrderId integer, CustomerId integer, RetailerId integer, ProductId integer, Count integer
Я пытаюсь выяснить, какой товар имеет наибольшее количество заказов для каждого продавца.
Итак, для суммирования всех заказов по продукту у меня следующий запрос:
SELECT RetailerId, ProductId, SUM(Count) AS ProductTotal
FROM Orders
GROUP BY RetailerId, ProductId
ORDER BY RetailerId, ProductTotal DESC;
Это дает такой вывод:
RETAILERID PRODUCTID PRODUCTTOTAL
---------- ---------- ------------
1 5 115
1 10 45
1 1 15
1 4 2
1 8 1
2 9 12
2 11 10
2 7 1
3 3 3
4 2 1
5 11 1
Теперь все, что я хочу сделать, - это найти продукт с наибольшим количеством заказов на одного продавца. Прямо сейчас это показывает все продукты; Я хочу только один.
Я перепробовал слишком много вещей. Ниже приведен один особенно отвратительный пример:
SELECT O.RetailerId, O.ProductId, O.ProductTotal
FROM (
SELECT Orders.ProductId, MAX(ProductTotal) AS MaxProductTotal
FROM (
SELECT Orders.ProductId AS PID, SUM(Orders.Count) AS ProductTotal
FROM Orders
GROUP BY Orders.ProductId
) AS O INNER JOIN Orders ON Orders.ProductId = PID
GROUP BY Orders.ProductId
) AS X INNER JOIN O ON O.RetailerId = X.RetailerId AND O.ProductTotal = X.MaxProductTotal;
Решение этой проблемы, наверное, самое простое, но я просто не могу сейчас. Итак, мне нужна помощь.