2014-02-08 149 views
0

我有以下查詢,它可以很好地查詢星號cdr是否有所有錯過的隊列調用,但它是重複的。也就是說,如果在隊列呼叫中有兩個分機,則它被分類爲兩個未接來電。查詢中的MySQL查詢

查詢:

SELECT count(*) as today_total_8 
    FROM cdr 
    WHERE channel LIKE '%from-queue%' 
     AND disposition='NO ANSWER' 
     AND DATE(`calldate`) = DATE(CURDATE()) 

calldate是所有兩個結果相同的值;我如何將這個添加到上述查詢中以顯示計數到一個未接來電?

返回的數據上選擇一個沒有計數:

calldate   channel     disposition  
------------------------------------------------------------------------ 
2014-02-08 01:15:02  Local/[email protected];2  NO ANSWER 
2014-02-08 01:15:02  Local/[email protected];2  NO ANSWER 
2014-02-08 00:18:04  Local/[email protected];2  NO ANSWER 
2014-02-08 00:18:04  Local/[email protected];2  NO ANSWER 

我怎麼能做到這一點,因爲我希望我的計數爲2?

+0

表結構在哪裏? – Premraj

+0

對不起,我不知道你的意思。 – user3148002

+0

Cdr(調用目錄)對象詳細信息? – Premraj

回答

0
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 
+0

謝謝所有,這工作。 – user3148002

0

變化查詢的SELECT列表是這樣的:

SELECT COUNT(DISTINCT SUBSTRING_INDEX(cdr.channel,'@',1) AS today_total_8 
    FROM ... 

這將防止「重複」的擴展名(信道的「@」符號前的部分)的值計數不止一次。

這是使用SUBSTRING_INDEX函數僅返回「擴展」,例如, 'Local/201'

COUNT聚合體內的DISTINCT關鍵字爲每個唯一值「extension」的計數加1。

+0

你會介意幫助我在這個http://stackoverflow.com/questions/30378663/mysql-querying-aggregate-of-non-overlapping-dates? – exodream