我想计算测试组的百分比。 我有 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/