Untitled
WITH first AS (SELECT u.user_id, DATE_TRUNC('month', MIN(event_time))::date AS first_date FROM tools_shop.users u JOIN tools_shop.orders o ON u.user_id = o.user_id JOIN tools_shop.events e ON u.user_id = e.user_id GROUP BY 1), all_ts AS (SELECT e.user_id, DATE_TRUNC('month', e.event_time)::date AS dt_event FROM first f JOIN tools_shop.events e ON e.user_id= f.user_id group by 1,2) SELECT DISTINCT all_ts, count(user_id) OVER (PARTITION BY dt_event) AS cohort_cnt FROM all_ts;