Помогите решить задачу с помощью подзапросов (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

Ответы (0 шт):