假设我有一个类似于这样的MySQL表:
软件表:
id int
name text
votes int
rating int
如果投票数是某人投票赞成该项目的次数,则评级将是这些投票的平均值。
示例数据:
id: 0
name: FooBar!
votes: 5
rating: 3
现在另一位用户出现并将其评为1.如何计算新的评级?每次有人像
一样投票时,最好再制作另一张桌子并输入新的一行id int
software_id int
score int
user_id int
然后计算每次重新计算平均评分?我认为这会对服务器产生影响。
第二个问题:
我希望能够按最高评分订购该软件,但我不想要一个平均5星评级的节目,但只有1票的排名高于平均4的893票的节目。我该如何做到这一点?
答案 0 :(得分:3)
vote count : 5
average rating: 3
评分为1的新投票
5*3+1
new rating= ----- = 16/6 = 8/3 = 2.666..
6
你必须考虑新投票的“权重”(所有投票的1/6)和旧的平均值(6个中的5个出现)。旧的平均值3计算5次,新评级一次=> 5 * 3 + 1 = 16.然后你除以总共6票。
真的取决于你是否期望成为游戏者而不是
我建议你这样做。