Maison >base de données >tutoriel mysql >Comment regrouper les horodatages en intervalles de 5 minutes pour les requêtes de comptage ?

Comment regrouper les horodatages en intervalles de 5 minutes pour les requêtes de comptage ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-15 08:15:45795parcourir

How to Group Timestamps into 5-Minute Intervals for Count Queries?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn