如何计算条件分组的百分比?
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
,这会为您提供一个介于 0
和 1
之间的数值,表示 'failure'
status
中记录的比率。如果您想要百分比,可以将其乘以 100
。
我有一个 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
,这会为您提供一个介于 0
和 1
之间的数值,表示 'failure'
status
中记录的比率。如果您想要百分比,可以将其乘以 100
。