Použijte date_trunc()
zkrátit časová razítka na měsíc a pokrýt rok i měsíc v jednom sloupci. Můžete použít to_char()
naformátujte jej libovolným způsobem.
Chcete-li získat průběžný počet, který uvádíte ve své doplňující otázce, přidejte funkci 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
pro Psotgres 9.6
db<>fiddle here pro Postgres 12
Funkce okna se provádějí po agregační funkce, takže můžeme spustit funkci okna nad agregací na stejné úrovni dotazu. Související:
Je nezbytné použít stejný základní výraz ve funkci okna a v GROUP BY
:date_trunc('month', period_start)
.