SQL查询指定Environment下近7天Result连续为Pass的Name值
SQL查询实现方案
要实现指定环境下近7天Result连续为Pass的Name筛选,核心逻辑非常明确:在目标环境、近7天的时间范围内,只要某个Name存在任意一条Result不等于'Pass'的记录,就直接排除,剩下的就是符合要求的结果。
下面的写法兼容绝大多数主流SQL引擎,替换对应参数即可直接使用:
SELECT DISTINCT t.Name FROM 替换为你的实际表名 t WHERE -- 此处修改为需要筛选的环境值,示例场景填'UAT' t.Environment = 'UAT' -- 限定近7天时间范围,MySQL用户可将本行替换为 t.Timestamp >= DATE_SUB(NOW(), INTERVAL 7 DAY) AND t.Timestamp >= CURRENT_TIMESTAMP - INTERVAL '7 days' -- 排除近7天内出现过非Pass结果的Name AND NOT EXISTS ( SELECT 1 FROM 替换为你的实际表名 t2 WHERE t2.Name = t.Name AND t2.Environment = t.Environment AND t2.Timestamp >= CURRENT_TIMESTAMP - INTERVAL '7 days' AND t2.Result <> 'Pass' );
样例结果校验
用给出的UAT环境样例数据验证:
- ABC:近7天所有上报记录的Result均为Pass,满足条件,会被查询返回
- PQR:近7天所有上报记录的Result均为Pass,满足条件,会被查询返回
- XYZ:近7天内存在Result为'Fail'的记录,会被排除规则过滤,不会出现在结果中
和预期返回结果完全一致。
如果你的业务场景对「连续Pass」有更严格的定义(比如要求固定频率上报无时间断层),可以在这个基础逻辑上增加窗口函数做时间连续性校验,当前版本完全匹配描述的样例筛选规则。
内容的提问来源于stack exchange,提问作者Ankur Adlakha
相关产品推荐
相关产品推荐

