Подборка SQL запросов

Допустим у вас есть номер телефона рекламного отдела и 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

Запрос не сильно легкий, требует оптимизации, но результат дает 🙂

Добавить комментарий