gpt4 book ai didi

MySQL 权重评分

转载 作者:行者123 更新时间:2023-11-29 03:07:10 25 4
gpt4 key购买 nike

我想根据票数创建一个权重评级。因此,1 票 5 票不会比 4 票 4 票好。

我找到了这个数学形式:

贝叶斯 = ( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) )/(avg_num_votes + this_num_votes)

如何使 MySQL SELECT 获取最佳评分图像的 ID。

我有一张用于 IMAGE 的表和一张用于 VOTING 的表

投票:

id
imageID
totalVotes
avgVote

我想我必须在 SELECT 中使用 SELECT 来做到这一点,但是怎么做呢?

最佳答案

第一步是计算 avg_num_votesavg_rating:

SELECT
SUM(totalVotes)/COUNT(*) AS avg_num_votes,
SUM(avgVote)/COUNT(*) AS avg_rating
FROM voting;

如果您可以忍受小错误,偶尔计算一次可能就足够了。

现在使用您的公式和上面的值,您可以运行称重查询。作为一个小优化,我预先计算了 avg_num_votes * avg_rating 并将其命名为 avg_summand

SELECT
voting.*, -- or whatever fields you need
($avg_summand+totalVotes*avgVote)/($avg_num_votes+totalVotes) AS bayesian
FROM voting
ORDER BY bayesian DESC
LIMIT 1;

编辑

您可以将其作为连接运行:

SELECT
voting.*, -- or whatever fields you need
(avg_num_votes*avg_rating+totalVotes*avgVote)/(avg_num_votes+totalVotes) AS bayesian
FROM voting,
(
SELECT
SUM(totalVotes)/COUNT(*) AS avg_num_votes,
SUM(avgVote)/COUNT(*) AS avg_rating
FROM voting AS iv
) AS avg
ORDER BY bayesian DESC
LIMIT 1;

但这会计算每个查询的总和和平均值 - 称之为性能炸弹。

关于MySQL 权重评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13512613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com