mysql计算不同组的百分比

时间:2015-09-11 12:30:28

标签: mysql sql database

我想计算测试组的百分比。 我有A,B和C组。我想知道每个小组的成功百分比。

我的第一个查询是通过执行以下操作来计算每个组中的总测试次数: SELECT type, count(type) as total_runs From mytable Where ran_at > '2015-09-11' Group by type

第二个查询是计算每个组的成功:
SELECT type, count(type) as success FROM mytable where run_status like '%success%' and ran_at> '2015-09-11' Group by type

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

我很感激答案,其中包括简单的方式,可能效率不高,以及解释的有效方法

2 个答案:

答案 0 :(得分:1)

您可以使用条件聚合:

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将布尔表达式视为整数,其中1表示true,0表示false。上述工作假定run_status不是NULL。如果它可以是NULL,那么您需要case的明确avg()语句。

答案 1 :(得分:0)

我有这个,但如果run_status不是NULL,那么Gordon有更好的解决方案。

Select type, sum(if(run_status like '%success%',1,0)) / count(1) * 100) as p_success
From mytable
Where ran_at > '2015-09-11'
Group by type