Maison > base de données > tutoriel mysql > Comment obtenir une précision GROUP BY de /- 3 secondes lorsque vous travaillez avec des données DateTime dans MySQL ?

Comment obtenir une précision GROUP BY de /- 3 secondes lorsque vous travaillez avec des données DateTime dans MySQL ?

Susan Sarandon
Libérer: 2024-10-24 06:59:02
original
909 Les gens l'ont consulté

How to Achieve GROUP BY Precision of  /- 3 Seconds When Working with DateTime Data in MySQL?

MySQL GROUP BY DateTime avec une précision de /- 3 secondes

Énoncé du problème

Énoncé du problème un tableau avec des colonnes pour l'ID, l'horodatage et le titre, l'objectif est de regrouper les enregistrements qui se produisent à moins de 3 secondes les uns des autres. Dans ce scénario, les lignes avec les horodatages 15:00:00 et 15:00:02 seraient regroupées.

Solution

Au lieu d'identifier les débuts des chaînes basées sur des lignes individuelles, concentrons-nous sur le chaînage des horodatages.

Requête 1 : Déterminer les horodatages de début de chaîne

<code class="mysql">SELECT DISTINCT Timestamp
FROM Table a
LEFT JOIN Table b
ON (b.Timestamp >= a.Timestamp - INTERVAL 3 SECONDS
    AND b.Timestamp < a.Timestamp)
WHERE b.Timestamp IS NULL
Copier après la connexion

Cette requête renvoie les horodatages qui n'ont aucun horodatage au-dessus d'eux dans 3 secondes, indiquant le début des chaînes.

Requête 2 : associer des enregistrements aux horodatages de début de chaîne

<code class="mysql">SELECT Table.id, MAX(StartOfChains.TimeStamp) AS ChainStartTime
FROM Table
JOIN ([query #1]) StartOfChains
ON Table.Timestamp >= StartOfChains.TimeStamp
GROUP BY Table.id</code>
Copier après la connexion

Pour chaque ligne, cette requête identifie la plus grande chaîne -horodatage de début (se produisant avant l'horodatage de la ligne).

Opération GROUP BY finale

<code class="mysql">SELECT COUNT(*) --or whatever
FROM Table
JOIN ([query #2]) GroupingQuery
ON Table.id = GroupingQuery.id
GROUP BY GroupingQuery.ChainStartTime</code>
Copier après la connexion

Cette requête utilise la table GroupingQuery de la requête 2 pour regrouper les enregistrements en fonction de la colonne ChainStartTime, permettant des calculs agrégés au sein de chaque groupe horaire.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal