У меня есть следующий запрос, чтобы получить ежемесячное количество пользователей:Выполнить сложный запрос по нескольким датам
SELECT count(user_id) from subs
where (started_at between @start_date and @start_date + interval 1 month
or (expires_at>@start_date + interval 1 month and started_at<@start_date))
Если бы мы имели следующую БД:
user_id started_at expires_at
=== ==========================
1 2015-01-01 2015-12-31
2 2015-01-01 2015-01 -03
3 2015-02-01 2015-02-28
4 2015-03-01 2015-03-31
5 2015-04-01 2015-04-31
6 2015-04-01 2016-04-01
7 2015-05-01 2015-05 -09
Мне нужен запрос, который возвращает следующую таблицу:
2015-01 - 2
2015-02 - 2 (потому что одна из записей Яна не истекает до декабря)
2015- 03 - 2
2015-04 - 3
2015-05 - 3
и т.д.
Так что это эффективный способ, чтобы получить этот результат в одном запросе?
Кажется, вы меня не получили: я хочу запустить запрос (start_at между start_date и start_date + интервал 1 месяц или (expires_at> start_date + interval 1 month и start_at
Ну, если несколько человек здесь не кажутся вам, то это может быть проблемой с вашим объяснением. Перейдите к редактированию своего вопроса и включите структуры таблиц, примеры данных и ожидаемый результат. – CBroe
жаль что не ясно - редактировал вопрос –