Для каждого месяца с июля 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;