Здравствуйте. Посоветуйте, пожалуйста, в каком направлении копать составление запроса.
Есть таблица для платежей с полями id, plan_id, created_at, summ.
Нужно посчитать количество новых платежей за последние N дней. Новым считается платеж(привязанный к plan_id), который был создан за последние N дней, при этом других платежей за более ранний период (cвязанных с тем же plan_id) не должно быть.
Буду благодарен за любой совет.
Пока реализовал в таком формате
SELECT COUNT(*)
FROM (
SELECT (
SELECT COUNT(*) FROM payment t WHERE s.plan_id = t.plan_id AND t.created_at BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 DAY) AND CURDATE() ) as 'count_in' ,
(
SELECT COUNT(*) FROM payment t2 WHERE s.plan_id = t2.plan_id AND t2.created_at < DATE_SUB(CURDATE(), INTERVAL 10 DAY) ) as 'count_before'
FROM payment s
GROUP BY s.plan_id
HAVING (count_in = 1) AND (count_before=0)
)as new;
Здесь -count_in -количество платежей одного plan_id за требуемый период
count_before -количество платежей до указанного периода
Далее -группировка по plan_id. И все это еще раз вложено в алиас new для подсчета количества plan_id с указанным условием( 1 платеж за выбранный период и отсутствие платежей за более ранние периоды)
Если что сделал не так, подскажите, пожалуйста(как можно сделать лучше или правильнее).
Заранее спасибо