mysql计算不同组的百分比

标签 mysql sql database

我想计算测试组的百分比。 我有 A、B 和 C 组。我想知道每个组的成功率是多少。

我的第一个查询是通过执行以下操作来计算每组中运行的总测试数: 选择类型,计数(类型)作为total_runs 来 self 的表 其中 ran_at > '2015-09-11' 按类型分组

第二个查询正在计算每个组的成功次数:
SELECT 类型,count(type) 为成功 来 self 的表 其中 run_status 如 '%success%' 和 ran_at> '2015-09-11' 按类型分组

现在我需要将一个除以另一个并乘以 100。
我如何在一个查询中以有效的方式执行此操作,我猜嵌套查询不是那么有效 - 但无论如何我看不到如何使用嵌套查询来解决它。

我希望得到包含简单方法(可能不是那么有效)以及带有解释的有效方法的答案

最佳答案

您可以只使用条件聚合:

SELECT type, sum(run_status like '%success%') as success,
       100 * avg(run_status like '%success%') as p_success
FROM mytable
where ran_at> '2015-09-11'
Group by type;

在数字上下文中,MySQL 将 bool 表达式视为整数,1 表示 true,0 表示 false。上述工作假设 run_status 不为 NULL。如果它可以为 NULL,那么您需要为 avg() 显式 case 语句。

关于mysql计算不同组的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523586/

相关文章:

mysql - 需要帮助组合两个 MySQL 查询

mysql - 调用-rc.d : could not determine current runlevel

mysql选择表,其中行数取决于两列中的动态值

mysql - SQL QUERY 结果排列问题

Android Realm 找到前 N 个元素

mysql - 与多个表之一相关的数据库列

php - PHP 与 MySQL 中的数据操作速度

mysql - 从数据库中选择最受欢迎的标签?

SQL 按年龄范围分组

php - 数据库字符集转换