【问题标题】:MySQL : Calculate percentage composition based on a specific valueMySQL:根据特定值计算百分比组成
【发布时间】:2025-11-27 01:00:02
【问题描述】:
我有以下名为 Table1 的 MySQL 表
结果可以是通过或失败。我想计算每个 id 的通过百分比。
结果必须是基于公式的下表:对于每个 id,计算给定 id 的 Pass / Total Counts。例如 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
请帮忙
【问题讨论】:
标签:
mysql
sql
pivot
aggregate-functions
【解决方案1】:
您可以使用group by 和条件聚合,如下所示:
SELECT id,
COUNT(case when result = 'Pass' then 1 end) * 100 / count(1) as Percent
FROM aa
GROUP BY id
【解决方案2】:
你可以像这样进行条件聚合:
select id, avg(result = 'Pass') as pass_ratio
from mytable
group by id
在avg() 的上下文中,如果为真,则条件result = 'Pass' 被评估为1,如果为假,则为0。您可以将这些值平均得到“通过”的比率。