如何根据SQL中的每个不同ID对数字进行平均?

时间:2013-01-10 13:12:00

标签: sql sql-server sql-server-2008

我有CommentRating表,其中包含DrinkId的外键。我试图获得每个DrinkId的平均评分,以及我想要显示评分最高的前三名饮料ID。

commentRating  drinkID 

     9           7

     9           4

     8          11

     8           7

     7           4

     6           4

     6          11

这是我到目前为止的SQL,但我不知道如何更改它。

Select TOP(3)(AVG(commentRating)),DISTINCT(drinkID)
FROM  Comment order by commentRating desc

如何平均评分,选择排名前三位的饮品,并将其返回SQL?

2 个答案:

答案 0 :(得分:5)

GROUP BY

需要drinkID结果
SELECT TOP 3 AVG(commentRating), drinkID
FROM Comment
GROUP BY drinkID
ORDER BY AVG(commentRating) DESC

我建议您阅读您最喜欢的有关GROUP BY详细信息的SQL文档。对于T-SQL,它是GROUP BY (Transact-SQL) on MSDN

AVG是一个聚合函数。同样,我建议你阅读一些关于聚合函数的文档,在T-SQL中也可以在MSDN library中阅读。

答案 1 :(得分:3)

对于T-SQL:

select TOP 3 * from
(
select drinkID,avg(commentRating) avgCom 
from Comment group by drinkID
) t order by avgCom DESC

对于MySQL使用LIMIT关键字。