Выбрать топ продуктов

Присутствуют две таблицы.

Детали заказов: ProductID-id продукта, Quantity-количество проданного товара

CREATE TABLE #OrderDetails (ProductID nvarchar(50), Quantity nvarchar(50));
INSERT INTO #OrderDetails VALUES
('111','2'),
('222','2'), 
('333','1'),
('444','3'), 
('555','5'), 
('666','1');  

И информация о продукте: ProductID-id продукта, ProductName-название продукта

CREATE TABLE #Products (ProductID nvarchar(50), ProductName nvarchar(50));
INSERT INTO #Products VALUES
('111','Apple'),
('222','Nokia'), 
('333','Acer'),
('444','Samsung'), 
('555','HP'), 
('666','LG'); 

Требуется вывести имена и ID пяти самых покупаемых продуктов. А также сколько их было продано.


Ответы (1 шт):

Автор решения: teran

Берете заказы, джойните продукты, считаете число товаров в заказах, группируете по ним и сортируете по убыванию. берете первые 5.

SELECT p.ProductName, sum(Quantity) as q
FROM OrderDetails AS o
INNER JOIN Products AS p ON p.ProductID = o.ProductID
GROUP BY p.ProductName
ORDER BY SUM(Quantity) DESC

в тэгах у вас указана mysql тогда в конец LIMIT 5. Но поскольку данный вариант вызывает ошибку, то видимо там не mysql и работать в песочнице будет вариант SELECT TOP 5

зы: структуру таблиц и примеры данных надо включать в вопрос, а не по внешним ссылкам

→ Ссылка