MySql 按 COUNT 排序并列出总计数

标签 mysql

我正在使用此代码对我的数据库进行计数和排序:

$qry = "select entertainer, count(*) from final_results group by entertainer order by count(*) desc";

我得到了正确的结果,因为它按顺序或受欢迎程度列出了所有内容。

我想要显示前 5 个结果,每个结果都有一个计数,然后是所有结果的总数。

例如

Top response (10)
Second response (8)
Third response (6)
etc...

Total count = 56

如果有任何帮助和建议,我将不胜感激。

谢谢

约翰·C

最佳答案

您可以使用 WITH ROLLUP 获取总计,但这不适用于 LIMIT 5您想要只获取前五个结果。 (编辑:)它也不适用于排序,如评论中所述。

因此,您要么必须获取所有结果,而不仅仅是前 5 个结果,然后在应用程序中对它们进行排序,要么使用两个不同的查询,可能使用 UNION 在服务器端合并@RedFilter 建议。但是,如果您执行两个单独的查询,我个人宁愿从客户端应用程序中单独发出每个查询,因为稍后从前五个查询中分割总数会带来太多的工作而收效甚微。

要获取所有结果,您可以使用

select entertainer, count(*)
from final_results
group by entertainer with rollup

要执行两次不同的提取,您将使用

select entertainer, count(*)
from final_results
group by entertainer
order by count(*) desc
limit 5

select count(*)
from final_results

如果您希望两者都在一个联合中,您可以这样做

(select 1 as unionPart, entertainer, count(*) as count
 from final_results
 group by entertainer
 order by count(*) desc
 limit 5)
union all
(select 2 as unionPart, 'Total count', count(*) as count
 from final_results)
order by unionPart asc, count desc

关于MySql 按 COUNT 排序并列出总计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548479/

相关文章:

MySQL LEFT JOIN、GROUP BY 和 ORDER BY 未按要求工作

mysql - 在 mysql 中添加 1 年日期和工作日

PHP, MySQL, 高效的标签驱动搜索算法

php - 在组合框中选择一个项目并用与前一个选项 php 和 mysql 相关的数据填充另一个组合框

mysql - 我可以在 MySql 中使用函数作为默认值吗?

php - 如何分隔数组内部的运算符?

php - 使用php代码创建php文件

mysql - Rails 调用同一个表中的不同字段

php - 如何组合 3 个 MySQL 表插入

mysql - 使用查询生成器进行复杂的连接查询