2

我有一个通话记录表,我需要知道每天有多少人第一次打电话,

注意:他们调用了选定的日期,但从未在该日期之前调用过。我设法让这个工作。

SELECT * FROM call_history GROUP BY caller_id HAVING SUBSTR(MIN(call_date), 1, 10) = SUBSTR(NOW(), 1, 10) 

这个查询给了我所有今天打电话的人(或者我输入的任何日期而不是现在)但以前从未打电话的人,我需要找到一种方法来在一个查询中获取所有天的结果,而不是每天询问,

结果应该是这样的:

2013-01-01, 10 new callers
2013-01-01, 15 new callers
2013-01-01, 22 new callers
2013-01-01, 4 new callers

等等....

谢谢!

4

2 回答 2

4

我认为这对于您正在寻找的东西来说效果最好。

内部查询按调用者获取第一个调用日期,外部查询将它们分组为每个调用日期的调用者。

SELECT first_call_date, COUNT(caller_id) AS caller_count
FROM (
    SELECT caller_id, DATE(MIN(call_date)) AS first_call_date
    FROM call_history 
    GROUP BY caller_id
) AS ch
GROUP BY first_call_date
于 2013-06-15T13:34:01.123 回答
0

尝试这个,

SELECT c1.call_date,
       count(caller_id)
FROM call_history c1
WHERE NOT EXISTS
    (SELECT ID
     FROM call_history c2
     WHERE c2.call_date<c1.call_date and c2.caller_id=c1.caller_id)
GROUP BY c1.call_date
于 2013-06-15T13:29:56.263 回答