嗨,我有这张桌子

create table process(process_id serial, state text);
insert into process(process_id, state) values(1, 'DONE'),
                                          (2, 'DONE'),
                                          (3, 'DONE'),
                                          (4, 'FAILED');

现在如果你跑:
select distinct(state),count(*) a from process group by state;

您将得到两行:失败1,完成3
我想要的是得到失败进程的百分比,即=失败/(失败+完成)。

最佳答案

Postgres中的一种方法使用avg()

select avg( (state = 'FAILED')::int )
from process;

如果您有其他状态,可以添加where state in ('FAILED', 'DONE')

关于sql - 如何获得符合PostgreSQL标准的行的百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45878909/

10-15 20:45