Regrouper les horodatages par intervalles de 5 minutes pour les requêtes de comptage
Question :
Une requête pour compter le nombre d'occurrences de John dans une plage de temps spécifique, mais le résultat est un horodatage non groupé et son décompte. L’objectif est de regrouper les résultats par intervalles de 5 minutes.
Solution :
Pour regrouper les résultats par intervalles de 5 minutes, vous pouvez utiliser MySQL et PostgreSQL avec une syntaxe spécifique :
PostgreSQL :
<code class="language-sql">SELECT date_trunc('minute', timestamp) + INTERVAL '5 minutes' * (EXTRACT(MINUTE FROM timestamp)::integer / 5) AS five_minute_interval, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
MySQL :
<code class="language-sql">SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
Dans les deux requêtes, la clause GROUP BY
est regroupée par le résultat arrondi de l'horodatage divisé par 300 (représentant un intervalle de 5 minutes). Cela crée effectivement des groupes de 5 minutes pour les horodatages et attribue chaque horodatage au groupe correspondant. PostgreSQL utilise la fonction date_trunc
pour gérer plus proprement la troncature et le regroupement des horodatages, tandis que MySQL utilise les fonctions FROM_UNIXTIME
et FLOOR
pour obtenir la même fonctionnalité.
Sortie :
La sortie affichera désormais les résultats regroupés par intervalles de 5 minutes et un décompte correspondant du nombre d'occurrences de John :
<code>five_minute_interval name COUNT(b.name) ------------------------ ---- ------------- 2010-11-16 10:30:00 John 2 2010-11-16 10:35:00 John 10 2010-11-16 10:40:00 John 0 2010-11-16 10:45:00 John 8 2010-11-16 10:50:00 John 0 2010-11-16 10:55:00 John 11</code>
Remarque : la partie WHERE …
du code doit être remplacée par vos conditions de requête en fonction de la situation réelle. De plus, pour garantir la lisibilité des résultats, la clause ORDER BY five_minute_interval
est ajoutée. Les instructions SQL améliorées implémentent plus précisément le regroupement à intervalles de 5 minutes et évitent les erreurs d'arrondi potentielles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!