MySQL查询每天只计算新用户数

时间:2013-06-15 13:24:23

标签: mysql sql

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

注意:他们调用了所选的日期,但从那天之前就没有。 我设法让这个工作。

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

依旧......

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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