-4

我有CommentRating一个表,其中包含一个外键DrinkId。我正在尝试获取每个 的平均收视率,DrinkId除此之外,我还想显示收视率最高的前三个 drinkIds。

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 中返回它们?

4

2 回答 2

5

您需要通过以下方式GROUP BY获得结果drinkID

SELECT TOP 3 AVG(commentRating), drinkID
FROM Comment
GROUP BY drinkID
ORDER BY AVG(commentRating) DESC

我建议您阅读您最喜欢的 SQL 文档,了解有关GROUP BY. 对于 T-SQL,它是MSDN 上的 GROUP BY (Transact-SQL)

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

于 2013-01-10T13:15:43.060 回答
3

对于 T-SQL:

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

对于 MySQL,使用LIMIT关键字。

于 2013-01-10T13:17:13.213 回答