Använd date_trunc()
att trunkera tidsstämplar till månaden och täcka både år och månad i en enda kolumn. Du kan använda to_char()
för att formatera det som du vill.
För att få det löpande antalet du nämner i din tilläggsfråga, lägg till en fönsterfunktion :
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
för Psotgres 9.6
db<>fiol d964>e för Postgres 12
Fönsterfunktioner exekveras efter aggregatfunktioner, så att vi kan köra en fönsterfunktion över ett aggregat på samma frågenivå. Relaterat:
Det är viktigt att använda samma grundläggande uttryck i fönsterfunktionen och i GROUP BY
:date_trunc('month', period_start)
.