У меня есть две таблицы: users
, user_source_history
.
В таблице users
сохраняются все зарегистрированные пользователи. И в таблице user_source_history
хранятся их действия. Эти действия могут включать вход в систему, заказ чего-либо. Таким образом, один пользователь может существовать несколько раз в user_source_history
.
Теперь проблема в том, что мне нужно найти всех активных пользователей в течение 15 дней.
Так, например, пользователь что-то купил 03.12.2014. Теперь этот пользователь будет активным пользователем до 18.12.2014.
Мне нужно найти всех активных пользователей в диапазоне дат.
Так, например, в этом диапазоне дат-
2014-12-03 - 10 users are active.
2014-12-04 - 10(active on 2014-12-03) + (new users for this date)
2014-12-05 - Number on active user on this date + all users in 15 day bucket
2014-12-06 - Number on active user on this date + all users in 15 day bucket
Запрос:
SELECT CAST(`user_last_interaction_date` as Date)
FROM `users` U
LEFT JOIN `user_source_history` USH on U.user_id = USH.user_id
WHERE `user_last_interaction_date` >
(SELECT DATE_ADD(`user_last_interaction_date`, INTERVAL -15 DAY)
FROM `users`
GROUP BY CAST(`user_last_interaction_date` as Date)
)
GROUP BY CAST(`user_last_interaction_date` as Date)
Я пробовал этот запрос, но SQL говорит Subquery returns more than one row
Как я могу разделить запрос для запуска более чем одной строки??