I have the following MySQL table named Table1

The Result can either be Pass or Fail. I want to calculate the percentage pass for each id.
Result must be the following table based on formulae: For each id, count Pass / Total Counts for given id. For example id 2 have 2 pass and 2 fail therefore percentage pass = 2/4

My Sql Query below is giving wrong results
SELECT id,COUNT(Result) * 100 / (SELECT COUNT(Result) FROM aa WHERE Result = 'Pass') as Percent FROM aa GROUP BY id
Please help
Advertisement
Answer
You can do conditional aggregation like that:
select id, avg(result = 'Pass') as pass_ratio from mytable group by id
In the context of avg(), condition result = 'Pass' is evaluated as 1 if true and 0 if false. You can just average these values to get the ratio of “pass”.