Heim  >  Artikel  >  Datenbank  >  Wie erreicht man bei der Arbeit mit DateTime-Daten in MySQL eine GROUP BY-Genauigkeit von /- 3 Sekunden?

Wie erreicht man bei der Arbeit mit DateTime-Daten in MySQL eine GROUP BY-Genauigkeit von /- 3 Sekunden?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 06:59:02806Durchsuche

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

MySQL GROUP BY DateTime mit einer Genauigkeit von /- 3 Sekunden

Problemstellung

Gegeben Eine Tabelle mit Spalten für ID, Zeitstempel und Titel. Ziel ist es, Datensätze zu gruppieren, die innerhalb von 3 Sekunden auftreten. In diesem Szenario würden Zeilen mit den Zeitstempeln 15:00:00 und 15:00:02 gruppiert.

Lösung

Anstatt die Anfänge von Ketten basierend zu identifizieren Konzentrieren wir uns bei einzelnen Zeilen auf die Verkettung von Zeitstempeln.

Abfrage 1: Zeitstempel für den Kettenstart ermitteln

<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

Diese Abfrage gibt Zeitstempel zurück, über denen sich keine Zeitstempel befinden 3 Sekunden, was die Anfänge von Ketten angibt.

Abfrage 2: Datensätze mit Kettenstart-Zeitstempeln verknüpfen

<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>

Für jede Zeile identifiziert diese Abfrage die größte Kette -Startzeitstempel (tritt vor dem Zeitstempel der Zeile auf).

Endgültige GROUP BY-Operation

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

Diese Abfrage verwendet die GroupingQuery-Tabelle aus Abfrage 2, um Datensätze basierend auf zu gruppieren die ChainStartTime-Spalte, die aggregierte Berechnungen innerhalb jeder Zeitgruppe ermöglicht.

Das obige ist der detaillierte Inhalt vonWie erreicht man bei der Arbeit mit DateTime-Daten in MySQL eine GROUP BY-Genauigkeit von /- 3 Sekunden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn