Допустим у вас есть номер телефона рекламного отдела и PR-манагеры пустили какую-то рекламу в сентябре.
Задача: найти всех клиентов которые позвонили в сентябре первый раз в жизни, но при этом им, что-то не понравилось и они не звонили после сентября.
Инфа нужна, чтоб промыть им мозги… 🙂
Вот, что у меня получилось сходу:
…
SELECT c.*,d.*
FROM
(SELECT a.callerid as callerid1,a.count as count1 FROM
(select callerid,dst,count(*) from calls where dt between '2010-09-01 00:00:00' and '2010-10-01 00:00:00' and dst='5555555' group by callerid,dst) AS a
LEFT OUTER JOIN
(select callerid,dst,operator from calls where dt between '2009-02-01 00:00:00' and '2010-09-01 00:00:00' and dst='5555555') AS b
ON a.callerid=b.callerid
WHERE b.dst is null) as c
LEFT OUTER JOIN
(select callerid as callerid2,dst,count(*) as count2 from calls where dt between '2010-10-01 00:00:00' and '2010-11-01 00:00:00' and dst='5555555' group by callerid,dst) as d
ON c.callerid1=d.callerid2
WHERE d.dst is null
Запрос не сильно легкий, требует оптимизации, но результат дает 🙂