Сначала попробуйте сами: на собеседовании подсказки не будет.
Когорта это клиенты, чей первый заказ пришёлся на январь: min(created_at) по клиенту с HAVING в январском интервале. Дальше соединяем заказы с когортой и считаем count(DISTINCT customer_id) FILTER (WHERE ...) отдельно для февраля и марта: один клиент с тремя февральскими заказами должен считаться один раз.
Размер когорты берём отдельным подзапросом, а не count(DISTINCT) по соединению: у клиента когорты могли быть только январские заказы, но в когорте он есть.
WITH cohort AS (SELECT customer_id FROM orders GROUP BY customer_id HAVING min(created_at) >= '2026-01-01' AND min(created_at) < '2026-02-01') SELECT (SELECT count(*) FROM cohort) AS cohort, count(DISTINCT o.customer_id) FILTER (WHERE o.created_at >= '2026-02-01' AND o.created_at < '2026-03-01') AS feb, count(DISTINCT o.customer_id) FILTER (WHERE o.created_at >= '2026-03-01' AND o.created_at