Brug date_trunc()
at afkorte tidsstempler til måneden og dække både år og måned i en enkelt kolonne. Du kan bruge to_char()
for at formatere det som du vil.
For at få det løbende tal, du nævner i dit tillægsspørgsmål, skal du tilføje en vinduefunktion :
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
for Psotgres 9.6
db<>violin d964>e
for Postgres 12
Vinduesfunktioner udføres efter aggregatfunktioner, så vi kan køre en vinduesfunktion over et aggregat på samme forespørgselsniveau. Relateret:
Det er vigtigt at bruge det samme grundlæggende udtryk i vinduesfunktionen og i GROUP BY
:date_trunc('month', period_start)
.