MySQL:根据特定值计算百分比组成

时间:2020-12-30 11:39:03

标签: mysql sql pivot aggregate-functions

我有以下名为 Table1 的 MySQL 表

MySql table

结果可以是通过或失败。我想计算每个 id 的百分比通过率。

结果必须是基于公式的下表:对于每个 ID,计算给定 ID 的通过 / 总计数。例如 id 2 有 2 次通过和 2 次失败因此百分比通过 = 2/4

Intended Result

下面的我的 Sql 查询给出了错误的结果

SELECT  id,COUNT(Result) * 100 / (SELECT COUNT(Result) FROM aa WHERE Result = 'Pass') as Percent
FROM aa
GROUP BY id

请帮忙

2 个答案:

答案 0 :(得分:2)

您可以像这样进行条件聚合:

select id, avg(result = 'Pass') as pass_ratio
from mytable
group by id

avg() 的上下文中,条件 result = 'Pass' 如果为真则被评估为 1,如果为假则为 0。您可以对这些值进行平均以获得“通过”的比率。

答案 1 :(得分:0)

您可以按如下方式使用 group by 和条件聚合:

SELECT id,
       COUNT(case when result = 'Pass' then 1 end) * 100 / count(1) as Percent 
  FROM aa 
GROUP BY id