Maison >base de données >tutoriel mysql >Comment puis-je regrouper des données de séries chronologiques dans des segments personnalisés à l'aide de MySQL ?

Comment puis-je regrouper des données de séries chronologiques dans des segments personnalisés à l'aide de MySQL ?

DDD
DDDoriginal
2025-01-04 12:07:36728parcourir

How Can I Group Time Series Data into Custom Segments Using MySQL?

Regroupement des données de séries chronologiques en segments

Lorsque vous travaillez avec des données de séries chronologiques échantillonnées à intervalles réguliers, il devient souvent nécessaire de regrouper les données sur des données spécifiques. segments de temps. Cela permet aux analystes de données et aux ingénieurs d'obtenir des informations plus significatives sur les tendances et les modèles de données.

Par exemple, considérons un tableau qui collecte des échantillons toutes les deux secondes. Pour analyser les variations des valeurs de comptage sur une période plus longue, vous souhaiterez peut-être regrouper les échantillons dans des fenêtres de 10 ou 30 secondes. En additionnant ou en faisant la moyenne des valeurs de comptage dans chaque segment, vous pouvez observer des modèles qui pourraient être masqués lors de l'affichage de points temporels individuels.

Requête MySQL pour la segmentation

Pour y parvenir segmentation des données dans MySQL, vous pouvez utiliser la clause GROUP BY avec des opérations arithmétiques sur la colonne time_stamp. En divisant l'horodatage UNIX de chaque échantillon par un intervalle souhaité, vous pouvez regrouper les échantillons en segments en fonction de leur différence de temps.

Considérez la requête suivante pour regrouper les échantillons en segments de 30 secondes :

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 30

Cette requête créera des groupes pour chaque intervalle de 30 secondes dans la plage horaire de vos données.

Personnalisation du segment Limites

Les limites de l'intervalle peuvent être davantage personnalisées à l'aide de l'expression r dans la clause GROUP BY. En ajoutant une valeur entière positive r à l'horodatage UNIX avant de diviser, vous pouvez déplacer les limites du segment.

Par exemple, pour créer des segments de 20 secondes commençant à hh:mm:05 et se terminant à hh:mm 1 :05:

GROUP BY (UNIX_TIMESTAMP(time_stamp) + 5) DIV 30

Cette requête regroupera les échantillons en segments de 20 secondes, le premier segment commençant à hh:mm:05 et le dernier se terminant à hh:mm 1:05.

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