You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL分组查询:存在Failed则返回Failed否则返回Success

PostgreSQL分组状态聚合查询实现

核心实现逻辑

按Col1、Col2、Date三个维度分组,只要分组内存在任意一条Status为Failed的记录,分组最终状态即为Failed;仅当分组内所有记录状态均为Success时,最终状态才返回Success。

推荐SQL语句

使用PostgreSQL内置的bool_or聚合函数实现,执行效率更高:

SELECT
    Col1,
    Col2,
    "Date",
    CASE WHEN bool_or(Status = 'Failed') THEN 'Failed' ELSE 'Success' END AS Status
FROM 你的实际业务表名 -- 替换为环境中真实的业务表名即可
GROUP BY Col1, Col2, "Date"
ORDER BY "Date" DESC;

注意事项

  • Date属于SQL保留关键字,查询时必须用双引号包裹该字段名,否则会触发语法错误
  • 上述语句执行结果和给出的期望输出完全匹配:
    • (1234,123,6/29)分组存在Failed记录,返回Failed
    • (1204,133,6/28)分组全为Success,返回Success
    • (1224,133,6/28)分组存在Failed记录,返回Failed
    • (1214,143,6/27)分组全为Success,返回Success

通用兼容写法

如果需要兼容不支持bool_or聚合的场景,可以用条件计数的方式实现相同效果:

SELECT
    Col1,
    Col2,
    "Date",
    CASE
        WHEN SUM(CASE WHEN Status = 'Failed' THEN 1 ELSE 0 END) > 0 THEN 'Failed'
        ELSE 'Success'
    END AS Status
FROM 你的实际业务表名
GROUP BY Col1, Col2, "Date"
ORDER BY "Date" DESC;

内容的提问来源于stack exchange,提问作者una

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:24:22