mysql - 获取所有列的所有唯一值的百分比

标签 mysql

我有一个大约有 40k 行和 240 列的大表。有些列是 true/false 作为唯一可能的值。其他有多个可能的字符串。我需要生成的基本上是一个汇总报告,该报告将显示每列的所有可能值以及具有该值的总行的百分比(例如,第 5 列中所有行的百分比是“向上”的,百分比是“向上”的) “向下”,“向左”的百分比是多少,等等)

我能找到的就是在一列中查找不同值的计数:

选择方向,COUNT(*) 作为来自 full_db3 的计数 group by 方向 order by count desc

这给了我总行数:

选择 COUNT(*) 作为 full_db3 的计数

我不知道如何将这些组合起来给出百分比而不是计数。这也只提供了单列的结果,我正在寻找一种循环遍历每一列并获取结果的方法。

最佳答案

您的问题令人畏惧的原因是您有 240 列。如果这是一次性报告,Excel 或 Tablaeu 可能是创建具有基本统计数据的快速数据透视表的不错选择。

如果您需要在 MySQL 中执行此操作,您将需要返回您关心的每列中每个不同值的计数。取名为“COLUMN1”的列,其可能值为 0,1 和 2。

select 
  COLUMN1
  , ROUND( //Round to help control the output
            (count(COLUMN1)* 100 / (select count(*) from TABLE)
          ), 2)
      as Percentage
    from TABLE;

这将为您提供列中每个值的百分比。由于 240 列中的每一列都有不同值的计数,因此请勿尝试将所有不同的百分比图表合并在一起。希望这可以帮助您朝着正确的方向开始。

关于mysql - 获取所有列的所有唯一值的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614601/

相关文章:

php - 如何在提交按钮单击时将当前数据插入数据库?

java - 如何检查 JSP 页面上的 "date value",因为我已经修改了 setter 中的日期(如果它为空)

php - 我可以在 select 语句中使用两个Where吗

mysql - 如果已经存在时间,我如何验证时间?

mysql - 按日、周、月、年保存统计数据的数据库结构

php - 将数组数据插入到每个表列

php - 如何在session过期时自动删除一个表的所有记录

mysql - 在 Rails 中指定连接表的条件

php - MySQL:如何通过此查询获得更多结果 WHERE IN

java - 查询数据库记录中几乎相似的匹配字符串值