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;
Vous pouvez GROUP BY
deux colonnes :un horodatage tronqué à l'heure et un créneau de 5 minutes.
L'exemple produit les emplacements 0 - 11
. Ajouter 1
si vous préférez 1 - 12
.
Je lance le résultat de extract()
en entier, donc la division / 5
tronque les chiffres fractionnaires. Le résultat :
minute 0 - 4 -> slot 0
minute 5 - 9 -> slot 1
etc.
Cette requête renvoie uniquement des valeurs pour les créneaux de 5 minutes où des valeurs sont trouvées. Si vous voulez une valeur pour tous fente ou si vous voulez un somme courante plus de 5 minutes, considérez cette réponse connexe :
- PostgreSQL :nombre de lignes en cours pour une requête "par minute"