查询中的MySQL查询

查询中的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()) 对于

我有下面的查询,它可以很好地查询所有错过的队列调用的星号cdr,但它是重复的。也就是说,如果队列调用中有两个分机,那么它被分类为两个未接呼叫

查询:

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(调用目录)对象详细信息?抱歉,请参阅修改后的问题文本。列出表中的所有列和这些列的类型。您是否介意在这方面帮助我?