查询中的MySQL查询
我有下面的查询,它可以很好地查询所有错过的队列调用的星号cdr,但它是重复的。也就是说,如果队列调用中有两个分机,那么它被分类为两个未接呼叫 查询:查询中的MySQL查询,mysql,asterisk,Mysql,Asterisk,我有下面的查询,它可以很好地查询所有错过的队列调用的星号cdr,但它是重复的。也就是说,如果队列调用中有两个分机,那么它被分类为两个未接呼叫 查询: SELECT count( * ) as today_total_8 FROM cdr WHERE channel LIKE '%from-queue%' AND disposition='NO ANSWER' AND DATE(`calldate`) = DATE(CURDATE()) 对于
SELECT count( * ) as today_total_8
FROM cdr
WHERE channel LIKE '%from-queue%'
AND disposition='NO ANSWER'
AND DATE(`calldate`) = DATE(CURDATE())
对于所有两个结果,calldate
列的值相同;如何将其添加到上述查询中,以显示一次未接来电的计数
在SELECT上返回的数据没有计数:
calldate channel disposition
------------------------------------------------------------------------
2014-02-08 01:15:02 Local/201@from-queue-00000012;2 NO ANSWER
2014-02-08 01:15:02 Local/200@from-queue-00000013;2 NO ANSWER
2014-02-08 00:18:04 Local/201@from-queue-00000010;2 NO ANSWER
2014-02-08 00:18:04 Local/200@from-queue-00000011;2 NO ANSWER
我希望我的计数为2,如何执行此操作?将查询的选择列表更改为类似以下内容:
SELECT count(distinct calldate ) as today_total_8
FROM cdr
WHERE channel LIKE '%from-queue%'
AND disposition='NO ANSWER'
AND DATE(`calldate`) = DATE(CURDATE())
GROUP BY calldate
SELECT COUNT(DISTINCT SUBSTRING_INDEX(cdr.channel,'@',1) AS today_total_8
FROM ...
这将防止扩展名的“重复”值(在“@”符号之前的通道部分)被多次计数
这是使用SUBSTRING_INDEX函数仅返回“扩展名”,例如'Local/201'
COUNT
aggregate中的DISTINCT
关键字为“extension”的每个唯一值的计数加1。表结构在哪里?抱歉,我不知道你的意思。Cdr(调用目录)对象详细信息?抱歉,请参阅修改后的问题文本。列出表中的所有列和这些列的类型。您是否介意在这方面帮助我?