首页 > 解决方案 > 如何使用sql在postgresql中分组划分

问题描述

数据行:

id status model  time
1  F      m0     12:00
2  S      m0     13:00
3  F      m0     14:00
4  S      m1     12:00
5  S      m1     13:00
6  S      m1     14:00

我想按模型获得失败率(状态 = f),结果将是

model    fail_rate
m0       2/3
m1       0/3

我们可以只使用 sql 得到结果吗?

提前致谢

标签: sqlpostgresql

解决方案


很容易,使用聚合:

select model,
       avg( (status = 'F')::int ) as fail_rate
from t
group by model;

Postgres 可以将布尔表达式转换为数字,“1”表示真,“0”表示假。这些值的平均值就是比率。


推荐阅读