Използвайте date_trunc()
за съкращаване на времеви клейма до месеца и покриване на годината и месеца в една колона. Можете да използвате to_char()
за да го форматирате както искате.
За да получите броя на бяганията, който споменавате в допълнителния си въпрос, добавете прозоречна функция :
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
за Psotgres 9.6
db<>fiddle тук
за Postgres 12
Функциите на прозореца се изпълняват след агрегатни функции, така че можем да изпълним прозоречна функция върху агрегат на същото ниво на заявка. Свързани:
Важно е да използвате един и същ основен израз във функцията прозорец и в GROUP BY
:date_trunc('month', period_start)
.