Помогите решить задачу с помощью подзапросов (PostgreSQL)
требуется решить задачу ниже. Прилагаю схему БД:
Для каждой даты в таблице user_actions посчитайте количество первых заказов, совершённых пользователями.
Первыми заказами будем считать заказы, которые пользователи сделали в нашем сервисе впервые. В расчётах учитывайте только неотменённые заказы.
В результат включите две колонки: дату и количество первых заказов в эту дату. Колонку с датами назовите date, а колонку с первыми заказами — first_orders.
Результат отсортируйте по ввведите сюда кодозрастанию даты.
Поля в результирующей таблице: date, first_orders
Задачу можно решать используя только подзапросы и табличные выражения. JOIN использовать так же нельзя
Пытался сделать самостоятельно, но возвращает чуть большее кол-во заказов для каждой даты, чем нужно. Мне кажется, что я неправильно отбираю только 1 самый первый заказ для каждого пользователя. Подскажите, где ошибка?
Мой вариант:
WITH
t1 AS (SELECT user_id, DATE(MIN(time)) as date
FROM user_actions
GROUP BY user_id
)
SELECT date,
(SELECT COUNT(DISTINCT order_id)
FROM user_actions WHERE DATE(time) = date
AND order_id NOT IN (SELECT order_id
FROM user_actions
WHERE action = 'cancel_order' )) as first_orders
FROM t1
GROUP BY date
ORDER BY date