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

时间:2020-05-14 08:32:36

标签: mysql sql group-by count average

我有一个具有以下架构的表:

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

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

google-> 50%失败

Facebook-> 100%失败

我使用mysql 5.7

我试图使用group by到达此目的地,但我不能

1 个答案:

答案 0 :(得分:2)

您可以进行条件聚合。我喜欢用find /Users/ehsansarshar/Desktop/mongo-backups -type d -mmin -10 -exec rm -rf {} +

avg()

对于每个select provider, avg(status = 'failure') failure_ratio from mytable group by provider ,这将为您提供介于provider0之间的数值,该数值表示1 'failure'中记录的比率。如果您想要一个百分比,则可以乘以status