🎯 Objectif# Cumuler les montants ligne par ligne, en respectant un ordre chronologique. Pour effectuer une somme cummulée, on fait appel au fenêtrage. PostgreSQL propose une syntaxe très puissante appelée fenêtrage (window functions) pour ce type de calcul. SELECT dt, amount, SUM(amount) OVER (ORDER BY dt) AS cumulative_amount FROM public.rpt_daily_kpi ORDER BY dt; Ouput| dt | amount | cumulative_amount | |------------|--------|-------------------| | 2022-01-01 | 100 | 100 | | 2022-01-02 | 50 | 150 | | 2022-01-03 | 200 | 350 | 📚 Explication# SUM(amount) : somme classique OVER (ORDER BY dt) : applique cette somme progressivement selon la date dt C’est ça, la magie du fenêtrage 🪄 🛠️ Astuce : somme cumulée par groupe# Vous pouvez aussi partitionner les calculs, par exemple par client : SELECT customer_id, dt, amount, SUM(amount) OVER (PARTITION BY customer_id ORDER BY dt) AS cumulative_amount FROM public.rpt_daily_kpi; select *, sum(pct_sales_amount) over (order by sales_amount desc) cum_pct_sales_amount from ( select customer_id, sales_amount, sales_amount / sum(sales_amount) over () pct_sales_amount from public.sales_day ) foo order by pct_sales_amount desc .