Объединение нескольких запросов для отображения в одной таблице SQL

#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. Похоже, вам просто нужно объединить ваши запросы по дате. Можете ли вы обновить свой код, включив в него поле даты или месяца/года?