Сначала попробуйте сами: на собеседовании подсказки не будет.
Сначала определяем первый заказ каждого клиента среди всех его заказов: row_number() OVER (PARTITION BY customer_id ORDER BY created_at, order_id) и фильтр rn = 1. Второй ключ сортировки нужен, чтобы при одинаковом времени результат был детерминированным.
Только после этого отбрасываем первые заказы без промокода и группируем по промокоду. Если отфильтровать promo_code IS NOT NULL до нумерации, «первым» станет первый заказ с промокодом, а это другой вопрос.
WITH first_orders AS (SELECT customer_id, promo_code, row_number() OVER (PARTITION BY customer_id ORDER BY created_at, order_id) AS rn FROM orders) SELECT promo_code, count(*) AS customers FROM first_orders WHERE rn = 1 AND promo_code IS NOT NULL GROUP BY promo_code