PostgreSQL中是否可以对数组进行IS NOT NULL检查?

4

我有一个查询,需要按照一列进行分组,并检查是否有任何记录在不同的列中具有数据:

SELECT
  bar,
  MAX(CASE WHEN baz IS NOT NULL THEN 1 ELSE 0 END)::BOOLEAN as baz_has_data
FROM
  foos
GROUP BY
  bar

我觉得这有点晦涩,而使用 ANYARRAY_AGG 会更清晰。不幸的是,我找不到任何包含 IS NOT NULLANY(ARRAY_AGG ...) 的例子。这个是否可行?

1个回答

9

针对这个问题,有一个专门的聚合函数:bool_or()

SELECT bar, bool_or(baz IS NOT NULL) AS baz_has_data
FROM   foos
GROUP  BY 1;

如果组中至少有一行具有非空值,则返回TRUE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接