我有一张通话记录表, 我需要知道每天有多少人第一次打电话,
注意:他们调用了所选的日期,但从那天之前就没有。 我设法让这个工作。
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
依旧......
谢谢!
答案 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