Nie mogę uwierzyć, że przyjęta odpowiedź ma tak wiele głosów za – to okropna metoda.
Oto poprawny sposób na zrobienie tego za pomocą date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
To zła praktyka, ale możesz zostać wybaczony, jeśli użyjesz
GROUP BY 1
w bardzo prostym zapytaniu.
Możesz także użyć
GROUP BY date_trunc('month', txn_date)
jeśli nie chcesz wybierać daty.