Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php和mysql中计算前5名_Php_Mysql_Rating - Fatal编程技术网

在php和mysql中计算前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

嘿,我已经用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
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更惯用。