2012-10-17 28 views
2

我使用此表达式:如何进行查询以返回按日分组的行数?

SELECT DATE(calldate) as Data,COUNT(clid) as Registros,dst as Tronco 
FROM cdr WHERE dst=55008133070000 
AND calldate BETWEEN '2012-10-01' AND '2012-10-15' 
GROUP BY DATE(calldate), clid HAVING COUNT(clid) > 1 ORDER BY Data DESC 

Date---------Total------ Trunk 
2012-10-11 3 55008133070000 
2012-10-11 2 55008133070000 
2012-10-11 3 55008133070000 
2012-10-10 2 55008133070000 
2012-10-10 2 55008133070000 
2012-10-10 2 55008133070000 
2012-10-09 3 55008133070000 
2012-10-09 2 55008133070000 
2012-10-09 2 55008133070000 
2012-10-09 3 55008133070000 
2012-10-09 5 55008133070000 
2012-10-09 5 55008133070000 

然而,需要显示的倍天重复的量。

Date---------Total------ Trunk 
2012-10-11 3 55008133070000 
2012-10-10 3 55008133070000 
2012-10-09 6 55008133070000 

有什么建议吗?

回答

0

EDITED由于OP评论:

你应该dst组,而不是由clid,也算为不同的目标号码,请参阅GROUP BY子句和COUNT:

SELECT DATE(calldate) as Data,COUNT(distinct clid) as Registros, dst as Tronco 
FROM cdr 
WHERE dst=55008133070000 
     AND calldate BETWEEN '2012-10-01' AND '2012-10-15' 
GROUP BY DATE(calldate), dst 
HAVING COUNT(distinct clid) > 1 ORDER BY Data DESC 
+0

我已经按dst分组,但是返回总的来电,我只需要一些不同的电话拨打的电话的数量。 示例 如果“A”的电话号码在2012年10月16日打了2个电话,而电话号码“B”打了6个电话,我需要显示两个电话号码执行了多次呼叫。 感谢您的示例,但它返回总计,不尊重CLID> 1 – user1753403

+0

答复尚未编辑。 – danihp

+0

感谢您的帮助!没关系! – user1753403

2

在您的查询中,您使用的是GROUP BY DATE(calldate), clid,它会在每一天为您提供每个clidCOUNT()

GROUP BY子句中删除clid以获得每个日期的计数。

你最终的查询将类似于:

SELECT 
    DATE(calldate) as Data, COUNT(*) as Registros, dst as Tronco 
FROM 
    cdr 
WHERE 
    dst=55008133070000 
    AND calldate BETWEEN '2012-10-01' AND '2012-10-15' 
GROUP BY 
    DATE(calldate) 
HAVING 
    COUNT(clid) > 1 
ORDER BY 
    Data DESC 

在此查询,然而,拉扯dst可能没有意义,并可能被删除。

+0

我已经按dst分组了,但是返回总呼叫数量,我只需要多个不同的电话拨打的电话数量。示例如果“A”的电话号码在2012年10月16日拨打了2个电话,而电话号码“B”通过了6个电话,我需要显示两个电话号码执行的呼叫超过1次。谢谢你的例子,但它返回的总和,不尊重CLID> 1 – user1753403

+0

语法不尊重CLID> 1,只显示每日总数 – user1753403

+0

@ user1753403我不确定你要求的是什么点。我做了一个示例模式并执行了上面的查询,它生成了您请求的确切输出:[sqlfiddle](http://sqlfiddle.com/#!2/7a974/1/0) – newfurniturey

0

相反的ID,请使用Calldate。

SELECT DATE(calldate) as Data,COUNT(calldate) as Registros,dst as Tronco 
FROM cdr WHERE dst=55008133070000 
AND calldate BETWEEN '2012-10-01' AND '2012-10-15' 
GROUP BY DATE(calldate), dst HAVING COUNT(calldate) > 1 ORDER BY Data DESC 
+0

我已经按dst分组,但是返回的是总的通话量,我只需要多个不同的电话拨打的通话量。示例如果“A”的电话号码在2012年10月16日拨打了2个电话,而电话号码“B”通过了6个电话,我需要显示两个电话号码执行的呼叫超过1次。感谢你的例子,但它返回总计,不尊重CLID> 1 – user1753403

相关问题