Tôi không thể tin rằng câu trả lời được chấp nhận lại có nhiều phiếu ủng hộ đến vậy - đó là một phương pháp kinh khủng.
Đây là cách chính xác để làm điều đó, với date_trunc:
SELECT date_trunc('month', txn_date) AS txn_month, sum(amount) as monthly_sum
FROM yourtable
GROUP BY txn_month
Đó là cách làm không tốt nhưng bạn có thể được tha thứ nếu sử dụng
GROUP BY 1
trong một truy vấn rất đơn giản.
Bạn cũng có thể sử dụng
GROUP BY date_trunc('month', txn_date)
nếu bạn không muốn chọn ngày.