Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Sql 聚合函数的排序结果_Sql_Function_Aggregate_Grouping - Fatal编程技术网

Sql 聚合函数的排序结果

Sql 聚合函数的排序结果,sql,function,aggregate,grouping,Sql,Function,Aggregate,Grouping,此代码: SELECT ProductID, COUNT(ProductID) AS Occurrences FROM OrderDetails Group By ProductID; 尝试获取orderDetails表中出现的productID,计算包含该产品的订单数,然后按降序排列productID计数。用外行的话说,我想通过按降序显示它们的数量来显示哪些产品最受欢迎,这样“销售”最多的产品将出现在顶部。我遇到的问题是,当我尝试将“groupby”与“occurrents”一起使用时,它抛

此代码:

SELECT ProductID, COUNT(ProductID) AS Occurrences
FROM OrderDetails
Group By ProductID;
尝试获取orderDetails表中出现的productID,计算包含该产品的订单数,然后按降序排列productID计数。用外行的话说,我想通过按降序显示它们的数量来显示哪些产品最受欢迎,这样“销售”最多的产品将出现在顶部。我遇到的问题是,当我尝试将“groupby”与“occurrents”一起使用时,它抛出了一个错误,即我无法将聚合函数与groupby一起使用。如果我按ProductID分组,它会显示各地的计数,这不是表示信息的最有用的方式。

这应该可以:


如果您想了解产品的受欢迎程度,您真正想使用的是
SUM
而不是
COUNT

SELECT ProductID,
       sum(Qty) AS Occurrences
FROM   OrderDetails
Group  By ProductID
Order  By sum(Qty) DESC;
COUNT
将为您提供有趣的结果。或者,您可以使用以下命令计数:

select ProductID
       count(distinct OrderNumber) as NumberOfOrders
from OrderDetails
group by ProductID
order by count(distinct OrderNumber) desc;

唯一让我困惑的是“数量”的用法。我不知道您是否将其用作其他内容的占位符,但在我的代码中,我将使用ProductID,因为我想计算(或求和)每个产品在orderDetail表中出现的次数。@TophHughes-我使用了“数量”因为我不确定该列在表中的名称,但通常在“OrderDetails”表中有一个quantity ordered列。考虑产品A被订购10次,产品B被订购5次,产品B订单之一是数量为12的情况。我认为B产品更受欢迎。
select ProductID
       count(distinct OrderNumber) as NumberOfOrders
from OrderDetails
group by ProductID
order by count(distinct OrderNumber) desc;