Учитывая, что у меня есть таблица с именем orders
заказов
id
customer_id
created_at
Как мне написать запрос для получения ежемесячного суммарного количества заказов для каждогопокупатель?Я хочу включить пропущенные месяцы в серию за январь 2018 года по май 2018 года
данные
id customer_id created_at
1 200 01/20/2018
2 300 01/21/2018
3 200 01/22/2018
4 200 03/20/2018
5 300 03/20/2018
6 200 04/20/2018
7 200 04/20/2018
ожидаемый результат
customer_id month count
200 01/01/2018 2
200 02/01/2018 2
200 03/01/2018 3
200 04/01/2018 5
200 05/01/2018 5
300 01/01/2018 1
300 02/01/2018 1
300 03/01/2018 2
300 04/01/2018 2
300 05/01/2018 2
У меня есть запрос для расчета чистого совокупного количества в месяц.У меня не было большого успеха при преобразовании запроса в работу для кумулятивного подсчета на одного клиента.
WITH monthly_orders AS (
SELECT date_trunc('month', orders.created_at) AS mon,
COUNT(orders.id) AS mon_count
from orders
GROUP BY 1
)
SELECT TO_CHAR(mon, 'YYYY-MM') AS mon_text,
COALESCE(SUM(c.mon_count) OVER (ORDER BY c.mon), 0) AS running_count
FROM generate_series('2018-01-01'::date, '2018-06-01'::date, interval '1 month') mon
LEFT JOIN monthly_orders c USING(mon)
ORDER BY mon_text;