SQL-Berechnung der Datumsdifferenz aufeinanderfolgender Zeilen
Die Bestimmung des Zeitintervalls zwischen aufeinanderfolgenden Datensätzen ist für die Datenanalyse bei der Arbeit mit großen Datensätzen von entscheidender Bedeutung. In diesem Beispiel ist eine SQL-Abfrage erforderlich, um die Datumsdifferenz zwischen aufeinanderfolgenden Zeilen mit derselben Kontonummer zu berechnen.
Das Folgende ist eine mögliche Abfrage:
<code class="language-sql">SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DaysDiff 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>
Diese Abfrage verwendet LEFT JOIN
, um jede Zeile in Tabelle T1
(der Originaltabelle) mit allen nachfolgenden Zeilen in Tabelle T2
zu vergleichen, die dieselbe Kontonummer haben. Anschließend wird die Funktion DATEDIFF
verwendet, um die Datumsdifferenz zu berechnen, und die Ergebnisse werden nach ID
, AccountNumber
und Date
gruppiert, um doppelte Zeilen zu entfernen. DATEDIFF(day, ...)
Gibt die Anzahl der Tage an, nach denen die Differenz berechnet werden soll.
Eine andere Methode ist wie folgt:
<code class="language-sql">SELECT ID, AccountNumber, Date, LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date) AS NextDate, DATEDIFF(day, Date, LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date)) AS DaysDiff FROM YourTable;</code>
Diese Abfrage verwendet Fensterfunktionen LEAD
, um das nächste Zeilendatum für jede Kontonummer abzurufen. LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date)
Ruft das Datum der nächsten Zeile der aktuellen Zeile ab oder NULL, wenn es keine nächste Zeile gibt. Berechnen Sie dann die Datumsdifferenz und präsentieren Sie das Ergebnis im erforderlichen Format. Diese Methode ist im Allgemeinen effizienter als LEFT JOIN
, insbesondere bei großen Datensätzen.
Beide Methoden können die Datumsdifferenz aufeinanderfolgender Zeilen berechnen. Welche Methode Sie wählen, hängt von Ihrem Datenbanksystem und Ihren Leistungsanforderungen ab. Die zweite Methode (mit LEAD
) ist normalerweise prägnanter und effizienter.
Das obige ist der detaillierte Inhalt vonWie berechnet man Datumsunterschiede zwischen aufeinanderfolgenden Zeilen in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!