获取去重Status列表并统计对应Reference数量的SQL问题排查
问题原因
你写的SQL里GROUP BY r.Status, r.Reference是核心错误——这会把每个Status和Reference的组合当成独立分组,每个分组里只会有一条记录,所以Count结果全是1。另外DISTINCT(r.Status)完全多余,GROUP BY Status后结果里的Status本来就是唯一的。
修正后的SQL
如果要统计每个Status对应的去重Reference数量(同一个Reference多次出现只算一次):
SELECT r.Status, COUNT(DISTINCT r.Reference) AS Count FROM db.ReferralUpdates r WHERE r.Reference IN ( 122708, 122712, 122713, 122715, 122724, 122730, 122732 ) GROUP BY r.Status
如果要统计每个Status对应的总记录数(不管Reference是否重复,每条记录都计入统计):
SELECT r.Status, COUNT(r.Reference) AS Count FROM db.ReferralUpdates r WHERE r.Reference IN ( 122708, 122712, 122713, 122715, 122724, 122730, 122732 ) GROUP BY r.Status
效果说明
执行修正后的SQL,就能得到你预期的各Status对应Count值,比如Status A对应2、Status B对应4这类结果。
内容的提问来源于stack exchange,提问作者MariaT
相关产品推荐
相关产品推荐

