Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:通过查询返回月销量最高的产品_Mysql_Group By_Count_Subquery_Max - Fatal编程技术网

MySQL:通过查询返回月销量最高的产品

MySQL:通过查询返回月销量最高的产品,mysql,group-by,count,subquery,max,Mysql,Group By,Count,Subquery,Max,我正在尝试编写一个查询,它应该返回每月最畅销的产品。有4种不同的产品 表Product\u Sales有3个属性:Product\u ID(4种类型)、Purchase\u ID(唯一,每个产品1次购买)和Purchase\u Date: 我有一个最新的问题: SELECT MONTHNAME(Purchase_Date) as "Month", Product_ID, Count(*) as "Sales_Amount" FROM Product_Sales GROUP BY MONTH(P

我正在尝试编写一个查询,它应该返回每月最畅销的产品。有4种不同的产品

Product\u Sales有3个属性:Product\u ID(4种类型)、Purchase\u ID(唯一,每个产品1次购买)和Purchase\u 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或更高版本,因此可以使用窗口功能-

SELECT Month, Product_ID, Sales_Amount
FROM (SELECT MONTHNAME(Purchase_Date) as "Month"
            ,Product_ID
            ,Count(*) as "Sales_Amount"
            ,ROW_NUMBER() OVER(PARTITION BY MONTHNAME(Purchase_Date) ORDER BY MONTH(Purchase_Date) DESC) RN
      FROM Product_Sales
      GROUP BY MONTHNAME(Purchase_Date)
              ,Product_ID
      ORDER BY MONTH(Purchase_Date)) X
WHERE RN = 1;

查看您使用的mysql版本是什么?8.0.12@P.Salmon'groupbymonth(Purchase_-Date),MONTHNAME(Purchase_-Date)'?是否将(*)计入“销售金额”?是否可能求和?@AnkitBajpai给我“错误代码:1248。每个派生表都必须有自己的别名”@AllenPeck,请现在再试。@AnkitBajpai我再试了一次,但它仍然给我错误代码:1055。SELECT列表的表达式#2不在GROUP BY子句中,并且包含未聚合的列“Sales_Database.Product_Sales.ProductID”,该列在功能上不依赖于GROUP BY子句中的列;这与sql\u mode=only\u full\u组不兼容_by@AllenPeck,请现在试一试。