PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Групирайте и пребройте събития за интервали от време, плюс текуща обща сума

Използвайте date_trunc() за съкращаване на времеви клейма до месеца и покриване на годината и месеца в една колона. Можете да използвате to_char() за да го форматирате както искате.

За да получите броя на бяганията, който споменавате в допълнителния си въпрос, добавете прозоречна функция :

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 за Psotgres 9.6
db<>fiddle тук за Postgres 12

Функциите на прозореца се изпълняват след агрегатни функции, така че можем да изпълним прозоречна функция върху агрегат на същото ниво на заявка. Свързани:

Важно е да използвате един и същ основен израз във функцията прозорец и в 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. Как да получите запис от втората най-висока до най-ниска стойност въз основа на ред по поле в PostgreSQL

  2. C#, Entity Framework Core &PostgreSql:вмъкването на един ред отнема 20+ секунди

  3. Актуализиране на ResultSets с типове SQL масиви в JDBC / PostgreSQL

  4. Как да тествате за припокриващи се дати в PostgreSQL

  5. Как можете да разширите съкратен ред на PostgreSQL в отделни колони?