Saya tidak percaya jawaban yang diterima memiliki begitu banyak suara positif -- ini metode yang mengerikan.
Inilah cara yang benar untuk melakukannya, dengan date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
Ini praktik yang buruk tetapi Anda mungkin dimaafkan jika menggunakan
GROUP BY 1
dalam permintaan yang sangat sederhana.
Anda juga dapat menggunakan
GROUP BY date_trunc('month', txn_date)
jika Anda tidak ingin memilih tanggal.