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

MySQL : Calculate percentage composition based on a specific value

我有以下 MySQL table 名为 Table1

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

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

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

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

请帮忙

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

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

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

您可以使用 group by 和条件聚合,如下所示:

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