获取字段的平均值,但使用SQL JOIN按来自另一个表的数据进行分组

时间:2014-05-05 19:01:40

标签: sql

我想获得具有相同ID的应用的平均评分。

例如AppID为1的应用程序应该只显示一条显示平均评分为3.333的记录,而另一条记录应该是AppID为14且平均评分为4.

SELECT reviews.Rating, reviews.AppID, apps.AppID, apps.image, apps.AppName, apps.Accepted 
FROM reviews 
JOIN apps 
WHERE reviews.AppID = apps.AppID

到目前为止,结果为每个ID提供单独的评级。

我试过

GROUP BY AppID

AVG(Rating)

但我不能理解它。 感谢帮助。

2 个答案:

答案 0 :(得分:0)

这应该适合你:

SELECT AppID, AVG(Rating) AS AverageRating
FROM reviews 
GROUP BY AppID

如果您需要apps表中的字段,可以尝试:

SELECT r.AverageRating, a.AppID, a.image, a.AppName, a.Accepted 
FROM apps a 
INNER JOIN (
SELECT AppID, AVG(Rating) AS AverageRating
FROM reviews 
GROUP BY AppID) r
ON r.AppID = a.AppID

答案 1 :(得分:0)

我相信已经给出的答案是正确的。然而,OP试图获得一堆专栏。也许唯一的问题是该群体需要更广泛。 OP没有评论该组失败的原因,是否返回了不需要的结果或是否无效。使用OP的选择目标列表,group by必须非常宽,例如:

SELECT reviews.Rating, reviews.AppID, apps.AppID, apps.image, apps.AppName, apps.Accepted 
FROM reviews 
JOIN apps 
WHERE reviews.AppID = apps.AppID
group by reviews.AppID, apps.AppID, apps.image, apps.AppName, apps.Accepted

-g