Données MySQL regroupées par intervalles de 5 minutes
Cet article résoudra un problème de requête MySQL : comment regrouper les données par intervalles de 5 minutes dans une plage de temps spécifique et afficher les résultats récapitulatifs de chaque intervalle sur une ligne distincte.
Requêtes MySQL améliorées
Cela peut être réalisé avec une simple modification de la requête en utilisant la syntaxe PostgreSQL ou MySQL :
PostgreSQL :
<code class="language-sql">SELECT TIMESTAMP WITH TIME ZONE 'epoch' + INTERVAL '1 second' * round(extract('epoch' from timestamp) / 300) * 300 as timestamp, name, count(b.name) FROM time a, id WHERE … GROUP BY round(extract('epoch' from timestamp) / 300), name</code>
MySQL :
<code class="language-sql">SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp) DIV 300 * 300) as timestamp, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300, name</code>
Description :
La requête révisée contient deux modifications clés :
FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp) DIV 300 * 300)
. (MySQL utilise cette méthode, la méthode PostgreSQL n'est pas applicable dans MySQL)UNIX_TIMESTAMP(timestamp) DIV 300
) et par nom, garantissant que chaque intervalle de 5 minutes est traité comme un groupe distinct. Résultat :
Avec ces modifications, votre requête produira le résultat souhaité, où les résultats sont regroupés par intervalles de 5 minutes, chaque intervalle affichant le nombre total d'occurrences de « John » dans cet intervalle.
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!