SQLite合并两个count查询为结果列时两列计数值相同问题求助
问题原因
- 关联缺失:你写的两个统计子查询没有和外层分组的
ROWa、ROWb字段做关联,每行统计的都是全表符合条件的总计数,且子查询返回值均非空,COUNT统计时会把所有行计入,导致两列结果完全一致。 - 别名冲突:子查询复用了外层表的别名
x,导致字段匹配逻辑混乱,无法正确获取外层每行的分组条件。 - 写法冗余:同表多维度计数的场景不需要嵌套多层子查询,用条件聚合即可实现,执行效率和可读性都更高。
正确实现写法
SELECT x.ROWa, x.ROWb, COUNT(CASE WHEN Workflow = "VALUEone" AND Shorthistory = "False" THEN 1 END) AS ResultA, COUNT(CASE WHEN Status = "successfull" THEN 1 END) AS ResultB FROM tableA x -- 若原逻辑中没有用到y表的任何字段,可直接删除下面这行LEFT JOIN关联,避免关联产生多余行导致计数偏差 LEFT JOIN tableB AS y ON SUBSTR(x.ROWb, 4, 1) = y.ROWz WHERE x.ROWc IN (5, 6) AND (SUBSTR(x.ROWb, 4, 1) = "6" OR SUBSTR(x.ROWb, 4, 1) = "9") GROUP BY x.ROWa, x.ROWb ORDER BY ResultA DESC, x.ROWb ASC, x.ROWa ASC
上述写法利用了COUNT统计时会忽略NULL值的特性,只统计满足对应条件的行数,和你两个独立查询的统计逻辑完全一致。
内容的提问来源于stack exchange,提问作者JaKe012
相关产品推荐
相关产品推荐

