Не мога да повярвам, че приетият отговор има толкова много гласове - това е ужасен метод.
Ето правилния начин да го направите с date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
Това е лоша практика, но може да ви бъде простено, ако използвате
GROUP BY 1
в много проста заявка.
Можете също да използвате
GROUP BY date_trunc('month', txn_date)
ако не искате да изберете датата.