sql >> Databasteknik >  >> RDS >> PostgreSQL

date_trunc 5 minuters intervall i PostgreSQL

SELECT date_trunc('hour', date1) AS hour_stump
     , (extract(minute FROM date1)::int / 5) AS min5_slot
     , count(*)
FROM   table1
GROUP  BY 1, 2
ORDER  BY 1, 2;

Du kan GROUP BY två kolumner:en tidsstämpel trunkerad till timmen och en 5-minuterslucka.

Exemplet producerar platser 0 - 11 . Lägg till 1 om du föredrar 1 - 12 .
Jag castar resultatet av extract() till heltal, så divisionen / 5 trunkerar bråksiffror. Resultatet:
minut 0 - 4 -> lucka 0
minut 5 - 9 -> lucka 1
osv.

Den här frågan returnerar endast värden för de 5-minutersplatser där värden finns. Om du vill ha ett värde för varje slot eller om du vill ha en löpande summa över 5-minuterstider, överväg detta relaterade svar:

  • PostgreSQL:löpande antal rader för en fråga "per minut"


  1. Flytta till MariaDB Backup

  2. Hur OBJECTPROPERTYEX() fungerar i SQL Server

  3. FrankenQueries:när SQL och NoSQL kolliderar

  4. Createuser:kunde inte ansluta till databasen postgres:FATAL:rollen tom finns inte