MySQL评级系统 - 查找评级

时间:2010-06-23 02:09:47

标签: sql mysql rating

我正在尝试用用户给出的最佳评分来评价水果类型。

我有一个名为评级的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

然而,如果我得到一个用户将一个水果评分为一个苹果5个,然后1000个用橙色评分为4的用户突然被认为更好。

我如何考虑投票数,以确保投票最多的是最佳投票。

2 个答案:

答案 0 :(得分:2)

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

听起来你要求的是受欢迎程度,而不是评级。一种简单的方法可能是将平均评级乘以投票数。怎么样(请原谅我,如果我的语法关闭,我现在远离SQL服务器):

select From_ID, AVG(Rating) * COUNT(Rating) AS Rating FROM Ratings Group BY {Fruit_ID {1}}

请记住,这个公式将比1票5票的票数高1000票。

答案 1 :(得分:0)

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

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

祝你好运!

尼克