我正在使用这个表达式:
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 :(得分:2)
在您的查询中,您使用的是GROUP BY DATE(calldate), clid
,每天COUNT()
会为clid
提供clid
。
从GROUP BY
子句中删除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
但是,在此查询中,提取{{1}}可能没有意义,可以删除。
答案 1 :(得分:0)
已编辑到期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
答案 2 :(得分: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