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

Oracle如何通过单条SQL按规则统计各位置各请求的部署状态

Oracle 单SQL实现部署状态聚合判定

完全可以通过单条SQL完成需求,不需要自连接,直接用分组聚合+条件分支判断即可匹配你定义的状态规则,写法简洁且执行效率更高。

核心判定逻辑

按req_id和location_id分组后,按优先级做三层判断即可:

  • 同组只要存在任意一条status = 'failed'的记录,整体状态直接判定为failed
  • 无failed记录的前提下,组内所有记录status均为complete时,整体状态判定为complete
  • 不满足以上两种条件的场景(比如存在部署中、待触发等中间状态,无失败但也没全完成),整体状态判定为retry

可直接执行的SQL代码

SELECT
  req_id,
  location_id,
  CASE
    WHEN COUNT(CASE WHEN status = 'failed' THEN 1 END) > 0 THEN 'failed'
    WHEN COUNT(CASE WHEN status = 'complete' THEN 1 END) = COUNT(*) THEN 'complete'
    ELSE 'retry'
  END AS overall_status
FROM deployment_status
GROUP BY req_id, location_id;

语法说明

  • Oracle支持在聚合函数内嵌套条件表达式,COUNT(CASE WHEN 匹配条件 THEN 1 END)只会统计符合条件的记录数,不符合条件的记录会被计为null,不会被count统计
  • 第一条判断优先级最高,只要组内有失败记录就直接返回failed,符合规则要求
  • 第二条判断通过对比「complete状态的记录数」和「组内总记录数」,判断是否所有应用都部署完成
  • 其余所有场景统一走else分支返回retry,覆盖所有中间状态场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:24:23