Sử dụng date_trunc()
để cắt ngắn dấu thời gian thành tháng và bao gồm cả năm và tháng trong một cột duy nhất. Bạn có thể sử dụng to_char()
để định dạng theo bất kỳ cách nào bạn muốn.
Để có được số lần chạy mà bạn đề cập trong câu hỏi bổ sung của mình, hãy thêm chức năng cửa sổ :
SELECT to_char(date_trunc('month', period_start), 'Mon YYYY') AS month
, count(*) AS month_ct
, sum(count(*)) OVER (ORDER BY date_trunc('month', period_start)) AS running_ct
FROM activity_log
WHERE action = 'create_entry'
GROUP BY date_trunc('month', period_start);
sqlfiddle
cho Psotgres 9.6
db <> fiddle tại đây
cho Postgres 12
Các chức năng của cửa sổ được thực thi sau các hàm tổng hợp, vì vậy chúng tôi có thể chạy một hàm cửa sổ trên một hàm tổng hợp trong cùng một cấp truy vấn. Có liên quan:
Điều cần thiết là sử dụng cùng một biểu thức cơ bản trong hàm window và trong GROUP BY
:date_trunc('month', period_start)
.