1
与计数一起工作组我有一个SQL子句如下所示:获取平均通过SQL子句
SELECT TOP 1000 ir.ItemID, it.Title, count(ir.ItemID) as amount
FROM [eboghandel].[dbo].[ItemReviews] ir
LEFT JOIN Items it on ir.ItemID = it.ID
group by ItemID, it.Title
order by amount desc
这完美的作品,我也得到项目与大多数评论列表。
但是,我也想显示此分数的“平均”评级。
我可以很容易做到:
SELECT Avg(Rating) FROM ItemReviews WHERE ItemID = '5324181'
哪位能给我的平均水平,但我想这与以前的查询相结合。
我想:
SELECT TOP 1000 ir.ItemID, it.Title, count(ir.ItemID) as amount, avg(ir.Rating)
FROM [eboghandel].[dbo].[ItemReviews] ir
LEFT JOIN Items it on ir.ItemID = it.ID
group by ItemID, it.Title, ir.Rating
order by amount desc
但是这一次有两个问题。
- 它计算错误(啊哈)
- 看来,除去一些评论因此计数是不同
任何想法,我怎么能解决这个SQL调用?
我认为你不能因为你有一个像1000行(前1000)的第一个SELECT语句组合在一两个选择语句,而第二个声明,是平均,你只有1行。将这两者结合起来肯定会给你一个错误的结果。 – Kim 2015-02-10 10:42:33
或者除非你平均重复1000次是正常的。 – Kim 2015-02-10 10:44:27
当group by时,列应该在GROUP BY中指定,或者在聚合函数(count,avg等)中指定参数! (如果两者都有,你会得到一个特定值的平均值,这就是具体的值......) – jarlh 2015-02-10 11:00:04