Get Avg 与 count in group by SQL 子句一起工作

Get Avg to work together with count in group by SQL clause

我有一个 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

这非常有效,我得到了评论最多的项目列表。

但是,我还想显示此分数的 "average" 评分。

我可以轻松做到:

  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 调用吗?

我觉得使用常用的table表达式可以帮你解决问题。下面写的是未经测试的代码,你或许可以按照同样的思路写一些东西。

;with cte
as
(
SELECT TOP 1000 ir.ItemID item_id, it.Title 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
)
select item_id, title, amount, avg(rating) from cte join ItemReviews ir
on cte.item_id=ir.id
group by item_id, title, amount
order by amount