PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Grupuj i zliczaj zdarzenia w odstępach czasu plus suma biegowa

Użyj date_trunc() aby skrócić znaczniki czasu do miesiąca i objąć rok i miesiąc w jednej kolumnie. Możesz użyć to_char() aby sformatować to w dowolny sposób.

Aby uzyskać bieżącą liczbę, o której wspominasz w pytaniu uzupełniającym, dodaj funkcję 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 dla Psotgres 9.6
db<>fiddle tutaj dla Postgresa 12

Funkcje okna są wykonywane po funkcje agregujące, dzięki czemu możemy uruchomić funkcję okna na agregacie na tym samym poziomie zapytania. Powiązane:

Konieczne jest użycie tego samego podstawowego wyrażenia w funkcji okna i w GROUP BY :date_trunc('month', period_start) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Suma różnicy czasu między wierszami

  2. Tabele Postgresql istnieją, ale pobieranie relacji nie istnieje podczas wykonywania zapytania

  3. Zwróć tablicę UUID PostgreSQL jako listę z psycopg2

  4. Czy ISO8601 jest najlepszym formatem daty dla jsonb PostgreSQL, gdy chcę filtrować według daty?

  5. PHP Postgres:Uzyskaj identyfikator ostatniego wstawienia