Nemůžu uvěřit, že přijatá odpověď má tolik kladných hlasů - je to hrozná metoda.
Zde je správný způsob, jak to udělat, s date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
Je to špatný postup, ale může vám být odpuštěno, pokud použijete
GROUP BY 1
ve velmi jednoduchém dotazu.
Můžete také použít
GROUP BY date_trunc('month', txn_date)
pokud nechcete vybrat datum.