如何计算条件分组的百分比?

How to calculate percentage in group by with condition?

我有一个 table 具有此架构:

+---------+-------------+-----------+---------+
|   id    |   provider  |  status   | message |
+---------------------------------------------+
|    1    |   Google    |  success  |  ...    |
|    2    |   Facebook  |  failure  |  ...    |
|    3    |   Facebook  |  failure  |  ...    |
|    4    |   Google    |  failure  |  ...    |
+---------------------------------------------+

我需要知道 failure 的百分比,例如:

google -> 50% failure

Facebook -> 100% failure

我用mysql5.7

我尝试使用 group by 到达此目的地,但我无法

您可以进行条件聚合。我喜欢用 avg():

select provider, avg(status = 'failure') failure_ratio
from mytable
group by provider

对于每个 provider,这会为您提供一个介于 01 之间的数值,表示 'failure' status 中记录的比率。如果您想要百分比,可以将其乘以 100