Сначала попробуйте сами: на собеседовании подсказки не будет.
Сегмент «на момент заказа» хранится в истории клиента с периодами действия, поэтому соединяем заказ с той версией, в которую попадает дата заказа: created_at::date >= valid_from AND created_at::date < valid_to. Обычный JOIN по текущему сегменту дал бы другой, неверный для прошлого ответ.
Заказы вне истории отваливаются сами, потому что соединение внутреннее. Месяц это date_trunc('month', created_at)::date, группировка и сортировка по номерам колонок.
SELECT date_trunc('month', o.created_at)::date AS month, h.segment, sum(o.total_amount) AS revenue FROM orders o JOIN customers_history h ON h.customer_id = o.customer_id AND o.created_at::date >= h.valid_from AND o.created_at::date < h.valid_to WHERE o.created_at >= '2026-01-01' GROUP BY 1, 2 ORDER BY 1, 2