繁体   English   中英

在SQL Postgres中按组进行迭代

[英]Iterate over group by in SQL Postgres

从最终目标开始,我希望结果集如下所示:

name  | completed
_________________
Josh  |  T
Tom   |  T
Harry |  F

我有一张桌子,看起来像:

id | name | status
__________________
1    Josh   complete
2    Josh   errored
3    Tom    generating
4    Tom    complete
5    Harry  pending

从结果集中可以看到,我想让每个人都知道自己是否有完整的状态。 我想我要遍历检查条件status = 'complete' by子句分组的每一行,但是我很努力。

您可以进行聚合:

select name, coalesce(max(case when status = 'complete' then T end), 'F') as completed
from table t
group by name;

您可以使用bool_or聚合函数

SELECT name, bool_or(status = 'complete')
FROM test
GROUP BY name

产量

| name  | bool_or |
|-------+---------|
| Tom   | t       |
| Josh  | t       |
| Harry | f       |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM