可以在 PostgreSQL 中检查数组的 IS NOT NULL 吗?

4 sql postgresql null boolean aggregate-functions

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

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

我觉得这有点神秘,并且认为使用ANYandARRAY_AGG会更清晰。不幸的是,我找不到任何同时包含 anIS NOT NULL和 an 的示例ANY(ARRAY_AGG ...)。这可能吗?

Erw*_*ter 9

有一个专用的聚合函数bool_or()

SELECT bar, bool_or(baz IS NOT NULL) AS baz_has_data
FROM   foos
GROUP  BY 1;
Run Code Online (Sandbox Code Playgroud)

TRUE如果组中至少一行具有非空值,则产生。