【问题标题】: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。您可以将这些值平均得到“通过”的比率。

      【讨论】: