Ik kan niet geloven dat het geaccepteerde antwoord zoveel stemmen heeft -- het is een vreselijke methode.
Dit is de juiste manier om het te doen, met date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
Het is een slechte gewoonte, maar het kan je vergeven worden als je
GROUP BY 1
in een zeer eenvoudige query.
U kunt ook
GROUP BY date_trunc('month', txn_date)
als u de datum niet wilt selecteren.