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;