在SQL Postgres中按组进行迭代

时间:2019-04-18 15:16:37

标签: sql postgresql

从最终目标开始,我想要一个如下所示的结果集:

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 by子句中的每一行,但是我很努力。

2 个答案:

答案 0 :(得分:2)

您可以进行聚合:

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

答案 1 :(得分:2)

您可以使用bool_or aggregate function

li <- list(A = 2, A = 4, B = 2)

收益

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