对聚合函数的结果进行排序

时间:2017-01-25 22:13:49

标签: sql function aggregate grouping

此代码:

SELECT ProductID, COUNT(ProductID) AS Occurrences
FROM OrderDetails
Group By ProductID;

是我尝试获取orderDetails表中出现的productID,计算包含该产品的订单数量,然后对productID计数降序进行排序。在外行人的术语中,我想通过按降序显示其数量来显示哪些产品最受欢迎,以便销售"销售的产品"最多的将发生在顶部。我遇到的问题是,当我尝试使用" Group by"使用" Occurrences",它会抛出一个错误,我不能将聚合函数与group by一起使用。如果我按产品ID进行分组,则会显示所有地方的计数,这不是提供信息的最有用方式。

2 个答案:

答案 0 :(得分:1)

应该工作:

SELECT ProductID, COUNT(ProductID) AS Occurrences
FROM OrderDetails
Group By ProductID
Order By COUNT(ProductID) DESC;

答案 1 :(得分:1)

如果您想了解产品的受欢迎程度,那么您真正想要使用的是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;