我有一个如下所示的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调用吗?
答案 0 :(得分:0)
我认为使用公用表表达式可以帮助您解决问题。下面写的是一个未经测试的代码,你可以在同一行写一些东西。
;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