1

我正在尝试通过用户给出的最佳评级来对水果类型进行评级。

我有一个名为 Ratings 的 Fruit 表,仅用于提交包含以下信息的评级

Fruit_id int
From_ID int
Rating int

现在我正在尝试运行如下 SQL 命令

select From_ID, AVG(Rating) AS Rating FROM Ratings Group BY `Fruit_ID` ORDER by Rating DESC

但是,如果我有 1 个用户将水果和苹果评为 5 分,然后有 1000 个用户将橙子评为 4 分,那么苹果突然被认为更好。

我如何考虑投票数,以确保投票最多和最好的一起排在第一位。

4

2 回答 2

2

这个问题更多的是关于调整你的数学公式而不是其他任何东西。

听起来您要求的是受欢迎程度,而不是评分。一个简单的方法可能是将平均评分乘以投票数。这个怎么样(如果我的语法不正确,请原谅,我现在不在 SQL 服务器上):

select From_ID, AVG(Rating) * COUNT(Rating) AS Rating FROM Ratings Group BYFruit_IDORDER by Rating DESC

请记住,这个公式对 1000 票 1 的评价远高于 1 票 5。

于 2010-06-23T02:17:53.503 回答
0

为什么不直接选择投票数并将其显示给用户。所以是的,一个苹果的 5 票 1 票将是一个整体的 5 票,但只有 1 票。这将为用户提供一种简单的方法来查看给定评级的“受欢迎程度”。

如果我没记错的话,这就是今天大多数五星级评级系统在网络上的运作方式。

祝你好运!

缺口

于 2010-06-23T02:23:41.007 回答