【发布时间】:2019-10-20 08:54:06
【问题描述】:
我正在尝试编写一个查询,该查询应该返回每月销量最高的产品。有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.
我可以通过查看每个月销售最多的产品的表格来了解。但我正在尝试进行查询,该查询仅返回该月销量最高的产品,即该月该产品的月份名称、产品 ID 和销售额。我一直无法使用 MAX 方法。我希望它返回这个:
+------------+----------+--------------+
| Month |Product_ID| Sales_Amount |
+------------+----------+--------------+
| January | 3 | 288 |
| February | 1 | 252 |
| March | 3 | 288 |
| April | 2 | 343 |
| May | 1 | 272 |
etc...
我不确定这是否需要我创建一个函数或一个子查询。
感谢任何建议或帮助!
【问题讨论】:
-
你用的是什么版本的mysql?
-
8.0.12 @P.Salmon
标签: mysql group-by count subquery max