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!