我有以下名为 Table1 的 MySQL 表
结果可以是通过或失败。我想计算每个 id 的百分比通过率。
结果必须是基于公式的下表:对于每个 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
请帮忙
答案 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