Heim >Datenbank >MySQL-Tutorial >Wie berechnet man die Datumsdifferenz zwischen aufeinanderfolgenden Zeilen in SQL?
Bestimmen der Zeitlücke zwischen aufeinanderfolgenden Datensätzen in SQL
Dieses Tutorial zeigt, wie Sie die Datumsdifferenz zwischen aufeinanderfolgenden Zeilen für eine bestimmte Kontonummer in einer SQL-Tabelle berechnen.
Methode 1: Unterabfrageansatz
Diese Abfrage berechnet die Datumsdifferenz mithilfe einer Unterabfrage:
<code class="language-sql">SELECT ID, AccountNumber, Date, NextDate, DATEDIFF(day, Date, NextDate) AS DateDifference FROM ( SELECT ID, AccountNumber, Date, ( SELECT MIN(Date) FROM YourTable T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable T1 ) AS T</code>
Erklärung:
Die äußere Abfrage wählt die ID, die Kontonummer, das Datum, das berechnete nächste Datum und die Datumsdifferenz aus. Die innere Abfrage identifiziert das nächste Datum (NextDate
) für jede Zeile, indem sie das Mindestdatum findet, das größer als das Datum der aktuellen Zeile ist und zum selben Konto gehört. DATEDIFF(day, Date, NextDate)
berechnet die Differenz in Tagen.
Methode 2: Self-Join-Technik
Eine effizientere Alternative nutzt einen Self-Join:
<code class="language-sql">SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DateDifference FROM YourTable T1 LEFT JOIN YourTable T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>
Bei diesem Ansatz wird ein LEFT JOIN
verwendet, um jede Zeile mit nachfolgenden Zeilen zu vergleichen, die dieselbe Kontonummer und ein späteres Datum haben. MIN(T2.Date)
findet das nächste Datum und DATEDIFF(day, ...)
berechnet die Differenz in Tagen. Zeilen ohne folgende Zeile haben einen NULL
-Wert für NextDate
und DateDifference
. Beachten Sie, dass das erste Argument von DATEDIFF
die Einheit der Differenz angibt (hier „Tag“). Passen Sie es nach Bedarf an (z. B. „Monat“, „Jahr“).
Das obige ist der detaillierte Inhalt vonWie berechnet man die Datumsdifferenz zwischen aufeinanderfolgenden Zeilen in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!