sql >> Databáze >  >> RDS >> PostgreSQL

Seskupování a počítání událostí za časové intervaly plus průběžný součet

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) .



  1. Funkce Jaro-winkler:proč je stejné skóre odpovídající velmi podobným a velmi odlišným slovům?

  2. MYSQL a klauzule LIMIT

  3. Automatický přírůstek MySQL?

  4. Připojení musí být platné a otevřené VB.Net