我有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?
答案 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关键字。