So berechnen Sie die Zeitdifferenz in zwei aufeinanderfolgenden Tabellenzeilen
In einer Tabelle mit einer Spalte namens „StartDate“ ist es oft notwendig, sie zu bestimmen der Zeitunterschied zwischen benachbarten Datensätzen. Ein Benutzer ist vor Kurzem auf dieses Problem gestoßen, als er mit einer Tabelle „requestId“ und „startdate“ gearbeitet hat, und hat Hilfe gesucht.
Die vom Benutzer bereitgestellte Tabelle enthielt die folgenden Daten:
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 |
Das Ziel des Benutzers war die Berechnung der Zeitunterschied zwischen jedem benachbarten Zeilenpaar (z. B. requestId 1 und 2, 2 und 3 usw.). Sie erkannten die Notwendigkeit einer Selbstverknüpfung, hatten jedoch Schwierigkeiten, die entsprechende ON-Klausel zu schreiben.
Die bereitgestellte Lösung nutzte einen INNER JOIN zwischen zwei Instanzen derselben Tabelle (Alias A und B). Die ON-Klausel gab an, dass die requestId in Zeile B gleich der requestId in Zeile A plus eins sein sollte:
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 hat den angeforderten Zeitunterschied zwischen aufeinanderfolgenden Zeilen erfolgreich berechnet und zurückgegeben. Wenn die requestId jedoch nicht fortlaufend ist, ist ein alternativer Ansatz erforderlich:
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
In dieser modifizierten Abfrage wird ein CROSS JOIN verwendet, um jede Zeile mit jeder anderen Zeile in der Tabelle abzugleichen. Eine Unterabfrage wählt dann die minimale Anforderungs-ID aus, die größer als die aktuell ausgewählte Anforderungs-ID ist, um sicherzustellen, dass nur aufeinanderfolgende Zeilen verglichen werden.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!