MYSQL评分算法

标签 mysql algorithm rating

我有一个 MYSQL 表,它存储用户每个事件的评级,事件表中的 1-10 称为 event_rating。我要查找的是基于票数和评分的最准确评分,如下所示:

SELECT
 c.userid,
 c.user_name,
 COUNT(d.event_rating) AS votesCount,
 AVG(d.event_rating) AS votesAvg,
 SUM(d.event_rating) AS tsum,
 COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating
FROM events d JOIN users c ON d.userid = c.userid WHERE (d.userid = '2') GROUP BY d.userid ORDER BY totalRating DESC

我为用户添加了两个虚拟评分,一个评分为 10,另一个评分为 5。

结果如下:

 userid     user_name      votesCount       votesAvg    tsum      totalRating
   2    Rahul Khanna         2            7.5000        15        7.50000000

这准确吗?我的计算是否正确?

--- 编辑 ---

发布更多结果

使用 COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating

userid  user_name   votesCount  votesAvg    tsum    totalRating
2      Rahul Khanna     2       7.5000       15      7.50000000
1      Rita Agnihotri   9       4.8889       44      4.88888889
3      Daniel Springs   4       3.5000       14      3.50000000
4      Roger Myers      6       3.5000       21      3.50000000
5      Chun Tanakat     3       3.0000       9       3.00000000

使用 COUNT(d.event_rating)*AVG(d.event_rating) as totalRating

userid  user_name   votesCount  votesAvg    tsum    totalRating
1      Rita Agnihotri   9       4.8889       44      44.0000
4      Roger Myers      6       3.5000       21      21.0000
2      Rahul Khanna     2       7.5000       15      15.0000
3      Daniel Springs   4       3.5000       14      14.0000
5      Chun Tanakat     3       3.0000       9       9.0000

--- 更多 ---

我应该改用下面的吗?

COUNT(d.event_rating)*AVG(d.event_rating)/10 as totalRating

我需要一种准确的方法来计算总评分,同时将 votesCount 考虑在内,并且评分必须在 1-10 之间。

--- 更多细节 ---

我有一张用户表和另一张表,用户可以添加新事件并对这些事件进行评分。事件表有一个 eventID、userid、event_rating 列。因此每个事件都可以对用户创建的事件进行评分。我想要的是计算所有事件评级以获得该用户的最大(总)评级。我希望无论用户创建了多少事件,总评分都在 1-10 之间且不超过 10。那可能吗?如果没有任何解决方案或想法?

感谢阅读:)

最佳答案

这是什么愚蠢的查询?

COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating

这没什么

(a*b)/a 永远是 b

你只需要获取AVG(d.event_rating)

你到底想要什么??

关于MYSQL评分算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5854327/

相关文章:

php - 针对特定 MYSQL 问题的反规范化替代方案?

algorithm - 具有 2 种事件的事件选择算法

html - 当前元素的悬停效果不起作用

php - 寻找用户可以投票的 super 简单但有效的 BUG/Feature 列表

flutter - 错误 : No named parameter with the name 'onRatingChanged'

mysql - CakePHP-查询HABTM表然后访问数据

mysql - 无法为 mysql 中的用户分配权限

php - mysql查询速度优化

c++ - 三角形类 C++

algorithm - 最短路径树的子树也是最短树吗?