Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer SQL-Tabelle?

Wie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer SQL-Tabelle?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 12:55:03372Durchsuche

How to Calculate Time Difference Between Consecutive Rows in a SQL Table?

Berechnung der Zeitdifferenz zwischen aufeinanderfolgenden Zeilen

Die Aufgabe besteht darin, die Zeitdifferenz zwischen aufeinanderfolgenden Datensätzen in einer Tabelle zu bestimmen, die eine StartDate-Spalte enthält. Um dies zu erreichen, können wir einen Self-Join verwenden und jeden Datensatz mit seinem nachfolgenden Datensatz in der Tabelle vergleichen.

Verwendung eines Self-Joins:

Zum aufeinanderfolgenden Vergleich Datensätze können wir einen Self-Join für die Tabelle verwenden. Hier ist eine Beispielabfrage:

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
INNER JOIN MyTable B ON B.requestid = (A.requestid + 1)
ORDER BY A.requestid ASC;

Diese Abfrage erstellt eine verbundene Tabelle, in der jeder Datensatz (A) mit seinem nächsten Datensatz (B) gepaart ist. Der berechnete Zeitunterschied in der Spalte gibt den Zeitunterschied zwischen den beiden Datensätzen an.

Umgang mit nicht aufeinanderfolgenden Anforderungs-IDs:

Wenn die Anforderungs-IDs nicht fortlaufend sind, können wir a verwenden CROSS JOIN und zusätzliche Filterung, um jeden Datensatz seinem unmittelbaren Nachfolger zuzuordnen.

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN(C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC;

Diese Abfrage stellt sicher, dass jeder Datensatz vorhanden ist mit seinem unmittelbaren Nachfolger abgeglichen, auch wenn die Anforderungs-IDs nicht aufeinanderfolgend sind.

Beispieldaten:

Beachten Sie die vom Autor bereitgestellten Beispieldaten:

requestId startdate
1 2011-10-16 13:15:56
2 2011-10-16 13:15:59
3 2011-10-16 13:15:59
4 2011-10-16 13:16:02
5 2011-10-16 13:18:07

Ausgabe:

Das Anwenden der obigen Abfrage auf die Beispieldaten führt zu einem Ergebnis die folgende Ausgabe:

requestId startdate timedifference
1 2011-10-16 13:15:56 NULL
2 2011-10-16 13:15:59 00:00:03
3 2011-10-16 13:15:59 00:00:00
4 2011-10-16 13:16:02 00:00:03
5 2011-10-16 13:18:07 00:02:05

Das obige ist der detaillierte Inhalt vonWie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer SQL-Tabelle?. 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