sql >> Database teknologi >  >> RDS >> PostgreSQL

date_trunc 5 minutters interval 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 to kolonner:et tidsstempel afkortet til timen og et 5-minutters slot.

Eksemplet producerer slots 0 - 11 . Tilføj 1 hvis du foretrækker 1 - 12 .
Jeg caster resultatet af extract() til heltal, så divisionen / 5 afkorter brøktal. Resultatet:
minut 0 - 4 -> slot 0
minut 5 - 9 -> slot 1
osv.

Denne forespørgsel returnerer kun værdier for de 5-minutters slots, hvor der findes værdier. Hvis du vil have en værdi for hver slot eller hvis du vil have en løbende sum over 5-minutters slots, overvej dette relaterede svar:

  • PostgreSQL:kørende antal rækker for en forespørgsel 'efter minut'


  1. Sådan aktiverer du SQL Server Agent XP'er ved hjælp af T-SQL

  2. Optimistisk samtidighed:IsConcurrencyToken og RowVersion

  3. Årsager til MySQL-fejl 2014 Kan ikke udføre forespørgsler, mens andre ubuffrede forespørgsler er aktive

  4. Hvordan bruger man en tabeltype i en SELECT FROM-sætning?