基于CASE条件统计列:仅当失败计数≤5时查询失败数
调整后的SQL查询方案
嘿,我来帮你搞定这个SQL逻辑调整,刚好能满足你要的「仅当失败计数≤5时才返回失败数量」的需求:
SELECT SUM(CASE WHEN status_code = '200' THEN 1 ELSE 0 END) AS success, CASE WHEN SUM(CASE WHEN status_code != '200' THEN 1 ELSE 0 END) <= 5 THEN SUM(CASE WHEN status_code != '200' THEN 1 ELSE 0 END) ELSE NULL -- 要是你需要默认显示0或者其他值,直接替换这里就行 END AS failure FROM my_table;
逻辑拆解
- 成功计数的逻辑和你原来的查询完全一致,正常统计
status_code='200'的记录总数。 - 失败计数这块,我们先算出总的失败记录数,再套一层
CASE做判断:如果总数≤5,就返回实际的失败数;如果超过5,就返回NULL(你可以根据业务场景换成0或者其他占位值)。
测试效果
用你给的测试数据(success=1,failure=2)跑这个查询,因为2≤5,所以会正常返回success=1, failure=2;要是失败数变成6,那failure字段就会显示NULL啦。
内容的提问来源于stack exchange,提问作者user12
相关产品推荐
相关产品推荐

