sql >> Database >  >> RDS >> PostgreSQL

date_trunc 5 minuten interval in 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;

Je zou kunnen GROUP BY twee kolommen:een tijdstempel afgekapt op het uur en een slot van 5 minuten.

Het voorbeeld produceert slots 0 - 11 . Voeg 1 toe als je liever 1 - 12 .
Ik cast het resultaat van extract() naar geheel getal, dus de deling / 5 kapt fractionele cijfers af. Het resultaat:
minuut 0 - 4 -> slot 0
minuut 5 - 9 -> slot 1
etc.

Deze query retourneert alleen waarden voor die perioden van 5 minuten waarin waarden worden gevonden. Als u een waarde wilt voor elke slot of als je een lopende som . wilt meer dan 5 minuten, overweeg dan dit gerelateerde antwoord:

  • PostgreSQL:lopende telling van rijen voor een zoekopdracht 'per minuut'


  1. Selecteer de laatste rij voor elke groep van orakel

  2. Array-elementen sorteren

  3. mysql-python installatiefout:Kan include-bestand 'config-win.h' niet openen

  4. Voer uitgestelde trigger slechts één keer per rij uit in PostgreSQL