MySQL统计含Support队列的Completed与Missed状态记录数问题
解决方案
正确查询语句
使用条件聚合函数可以直接在分组统计时分别计算不同状态的数量,无需子查询:
SELECT `Queue` AS `Queue`, COUNT(CASE WHEN `Status` = 'Completed' THEN 1 END) AS `Completed`, COUNT(CASE WHEN `Status` = 'Missed' THEN 1 END) AS `Missed` FROM `chat_contacts` WHERE `Queue` LIKE 'Support%' GROUP BY `Queue`;
执行结果
运行上述语句后将得到预期的正确结果:
Queue | Completed | Missed ------------------------------ Support | 3 | 0 Support1 | 2 | 0 Support2 | 1 | 1
原查询错误原因
你之前的子查询未关联外层分组的Queue字段,导致子查询统计的是所有以Support开头队列的Missed总条数(仅1条),而非每个队列自身的Missed数量。
等价替代写法(使用SUM)
也可以通过SUM函数实现相同逻辑:
SELECT `Queue` AS `Queue`, SUM(CASE WHEN `Status` = 'Completed' THEN 1 ELSE 0 END) AS `Completed`, SUM(CASE WHEN `Status` = 'Missed' THEN 1 ELSE 0 END) AS `Missed` FROM `chat_contacts` WHERE `Queue` LIKE 'Support%' GROUP BY `Queue`;
内容的提问来源于stack exchange,提问作者user3436467
相关产品推荐
相关产品推荐

