Я пытаюсь написать запрос, который должен вернуть самый продаваемый продукт в месяц. Есть 4 разных продукта.
Таблица Product_Sales имеет 3 атрибута: Product_ID (4 типа), Purchase_ID (уникальная и 1 покупка для продукта) и Purchase_Date:
У меня текущий запрос:
SELECT MONTHNAME(Purchase_Date) as "Month", Product_ID, Count(*) as "Sales_Amount"
FROM Product_Sales
GROUP BY MONTH(Purchase_Date), MONTHNAME(Purchase_Date)
ORDER BY MONTH(Purchase_Date);
В настоящее время возвращается:
+------------+----------+--------------+
| Month |Product_ID| Sales_Amount |
+------------+----------+--------------+
| January | 1 | 220 |
| January | 2 | 192 |
| January | 3 | 288 |
| January | 4 | 173 |
| February | 1 | 252 |
| February | 2 | 199 |
...etc.
Я могу видеть по таблице, какой Продукт продан больше всего за каждый месяц. Но я пытаюсь сделать запрос, который возвращает только самый продаваемый продукт за этот месяц, таким образом, название месяца, идентификатор продукта и объем продаж для этого продукта в этом месяце. Я не смог использовать метод MAX. Я хотел бы, чтобы вместо этого он возвращал:
+------------+----------+--------------+
| Month |Product_ID| Sales_Amount |
+------------+----------+--------------+
| January | 3 | 288 |
| February | 1 | 252 |
| March | 3 | 288 |
| April | 2 | 343 |
| May | 1 | 272 |
etc...
Я не уверен, что для этого потребуется, чтобы я создал функцию или подзапрос.
Любой совет или помощь приветствуются!