#sql #postgresql
Вопрос:
Мне нужно рассчитать количество активных пользователей в месяц. Система сопоставляет пользователей с фрилансерами, которые выполняют определенные задачи. У меня есть 3 таблицы, одна из которых является таблицей пользователей, одна-таблицей запросов задач и одна-таблицей соответствия задач. Типы пользователей: доступные пользователи, которые просто вошли в приложение, активные пользователи, которые сделали хотя бы один запрос на задание, и привлеченные пользователи, которые также сделали запросы на выполнение задач и выполнили их. Мой первый запрос, чтобы получить доступных пользователей, выглядит так:
SELECT count(id)
FROM users
WHERE users.created_at >= '2021-01-01' AND users.deleted_at is not null
Мой второй запрос заключается в том, чтобы привлечь активных пользователей:
SELECT count(distinct user_id) as active_users
FROM tasks_requests
WHERE tasks_requests.created_at >= '2021-01-01')
Мой третий и последний запрос-привлечь заинтересованных пользователей:
SELECT count(distinct task_request_id) as engaged_users
FROM task_matches
WHERE task_matches.created_at >= '2021-01-01' AND task_matches.state = "completed"
Мой желаемый результат-получить таблицу, в которой будет показано количество пользователей каждого типа за каждый месяц:
Дата | доступные пользователи | активные пользователи | вовлеченные пользователи |
---|---|---|---|
Январь 2021 года | 200 | 150 | 75 |
Февраль 2021 года | 145 | 63 | 52 |
Март 2021 | 215 | 125 | 95 |
Комментарии:
1. Помечайте тегом только ту базу данных, которую вы используете.
2. Похоже, вам просто нужно объединить ваши запросы по дате. Можете ли вы обновить свой код, включив в него поле даты или месяца/года?