Użyj date_trunc()
aby skrócić znaczniki czasu do miesiąca i objąć rok i miesiąc w jednej kolumnie. Możesz użyć to_char()
aby sformatować to w dowolny sposób.
Aby uzyskać bieżącą liczbę, o której wspominasz w pytaniu uzupełniającym, dodaj funkcję okna :
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
dla Psotgres 9.6
db<>fiddle tutaj
dla Postgresa 12
Funkcje okna są wykonywane po funkcje agregujące, dzięki czemu możemy uruchomić funkcję okna na agregacie na tym samym poziomie zapytania. Powiązane:
Konieczne jest użycie tego samego podstawowego wyrażenia w funkcji okna i w GROUP BY
:date_trunc('month', period_start)
.