Для каждого месяца с июля 1996 года по май 1998 года посчитайте конверсию в процентах. Найдите количество уникальных компаний-заказчиков в текущем месяце. Разделите его на общее количество компаний-заказчиков Northwind, которые оформили хотя бы один заказ за всё предыдущее время, включая текущий месяц. Под уникальностью компании в этой задаче подразумевается отсутствие повторов в выборке.

В итоговой таблице должны быть следующие поля:

  • дата первого числа текущего месяца;
  • количество компаний-заказчиков в текущий месяц;
  • общее количество компаний-заказчиков за всё предыдущее время, включая текущий месяц;
  • отношение количества покупателей за текущий месяц к общему количеству покупателей.

При делении не забудьте привести значения к вещественному типу real, тогда после деления вы получите вещественное, а не целое число. Не забудьте умножить результат на 100 и округлить значение до двух знаков после запятой. Перед округлением приведите результат в процентах к типу numeric, чтобы округление прошло без ошибок.

WITH 
enumerate_users AS
  (SELECT DATE_TRUNC('month', order_date)::date AS first_purchase,
          customer_id,
          ROW_NUMBER() OVER (PARTITION BY customer_id) AS rows_num
   FROM northwind.orders),
total_customers AS
  (SELECT DATE_TRUNC('month', order_date)::date AS month,
          COUNT(DISTINCT customer_id) AS customers_this_month
   FROM northwind.orders
   GROUP BY month
   ORDER BY month
  )

SELECT month,
       customers_this_month,
       (SELECT COUNT(DISTINCT customer_id)
        FROM enumerate_users
        WHERE first_purchase <= month) AS total_customers,
        ROUND((customers_this_month::real / (SELECT COUNT(DISTINCT customer_id)
                 FROM enumerate_users
                 WHERE first_purchase <= month) * 100)::numeric, 2) AS conversion
FROM total_customers;

Результат

month customers_this_month total_customers conversion
1996-07-01 20 20 100
1996-08-01 18 34 52.94
1996-09-01 19 43 44.19
1996-10-01 20 52 38.46

Задание выполнено верно