DROP MATERIALIZED VIEW user_purchase_summary;
CREATE MATERIALIZED VIEW user_purchase_summary_view AS SELECT
u.id as user_id,
create_time,
COUNT(*) as total_purchases,
SUM(CASE when p.status = 'cancelled' THEN 1 ELSE 0 END) as cancelled_purchases
FROM users u
JOIN purchases p ON p.user_id = u.id
WITH DATA / WITH NO DATA
;
CREATE UNIQUE INDEX idx_upsv_id ON user_purchase_summary_view("user_id");
CREATE INDEX idx_upsv_ct ON public.user_purchase_summary_view USING btree ("create_time");
REFRESH MATERIALIZED view user_purchase_summary_view;
REFRESH MATERIALIZED view CONCURRENTLY user_purchase_summary_view;
select * from user_purchase_summary_view limit 10;