在php和mysql中计算前5名
嘿,我已经用php和mysql制作了一个评级系统,现在我想选择前5名, 我做了一些东西,但如果用户添加了一个最高等级的评级,它的NR1排名 你们是如何在php和mysql中实现的 该表如下所示: -身份证 -中段 -液体 -评级 评级是一个从1到5的数字 提前谢谢 正如所指出的,这是一个想法:在php和mysql中计算前5名,php,mysql,rating,Php,Mysql,Rating,嘿,我已经用php和mysql制作了一个评级系统,现在我想选择前5名, 我做了一些东西,但如果用户添加了一个最高等级的评级,它的NR1排名 你们是如何在php和mysql中实现的 该表如下所示: -身份证 -中段 -液体 -评级 评级是一个从1到5的数字 提前谢谢 正如所指出的,这是一个想法: SELECT `mid`, SUM(`rating`) AS `total` FROM `rating` GROUP BY `mid` ORDER BY `total` DESC LIMIT 5 SEL
SELECT `mid`, SUM(`rating`) AS `total`
FROM `rating`
GROUP BY `mid`
ORDER BY `total` DESC
LIMIT 5
SELECT `mid`, SUM(`rating`) AS `total`
FROM `rating`
GROUP BY `mid`
ORDER BY `total` DESC
LIMIT 5
但是,为了确保评分很少的文章不会进入前五名,您可以添加一个阈值,只允许评分超过X的文章出现在结果中,也许可以更准确地描述前五名:
SELECT `mid`, SUM(`rating`) AS `total`, COUNT(1) AS `nrRatings`
FROM `rating`
GROUP BY `mid`
HAVING nrRatings > 5 // This is the threshold. Only articles with more than
// 5 ratings will be considered
ORDER BY `total` DESC
LIMIT 5
正如所指出的,这是一个想法:
SELECT `mid`, SUM(`rating`) AS `total`
FROM `rating`
GROUP BY `mid`
ORDER BY `total` DESC
LIMIT 5
但是,为了确保评分很少的文章不会进入前五名,您可以添加一个阈值,只允许评分超过X的文章出现在结果中,也许可以更准确地描述前五名:
SELECT `mid`, SUM(`rating`) AS `total`, COUNT(1) AS `nrRatings`
FROM `rating`
GROUP BY `mid`
HAVING nrRatings > 5 // This is the threshold. Only articles with more than
// 5 ratings will be considered
ORDER BY `total` DESC
LIMIT 5
如果我理解你的措辞,看起来1分是最高的?然后,订购人应为ASC。我认为平均价格比总和更合适。完全同意阈值的想法,所以像这样无耻的c/p重写;thx@Machine:P: SELECT `mid`, AVG(`rating`) AS `avg_rating`, SUM(1) AS `nrRatings` FROM `rating` GROUP BY `mid` HAVING nrRatings > 5 ORDER BY `avg_rating` ASC LIMIT 5
如果我理解你的措辞,看起来1分是最高的?然后,订购人应为ASC。我认为平均价格比总和更合适。完全同意阈值的想法,所以像这样无耻的c/p重写;thx@Machine:P: SELECT `mid`, AVG(`rating`) AS `avg_rating`, SUM(1) AS `nrRatings` FROM `rating` GROUP BY `mid` HAVING nrRatings > 5 ORDER BY `avg_rating` ASC LIMIT 5
mid和uid是什么?你在跟踪投票的数量吗?只需要最少的票数就可以进入前五名。中间和中间的票数是多少?你在跟踪投票的数量吗?只需要在前5名中计算最低票数。COUNT*或COUNTrating(如果评级为空)比SUM1更惯用。COUNT*或COUNTrating(如果评级为空)比SUM1更惯用。