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

助言がありますか?

4

3 に答える 3

2

クエリでは、GROUP BY DATE(calldate), clidwhich を使用して、毎日COUNT()for eachclidを取得します。

節から を削除して、各日付のカウントを取得し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は意味がなく、削除される可能性があります。

于 2012-10-17T14:06:47.557 に答える
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
于 2012-10-17T14:08:58.533 に答える
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
于 2012-10-17T14:07:03.557 に答える