Heim > Datenbank > MySQL-Tutorial > Wie berechnet man Datumsunterschiede zwischen aufeinanderfolgenden Zeilen in SQL?

Wie berechnet man Datumsunterschiede zwischen aufeinanderfolgenden Zeilen in SQL?

Mary-Kate Olsen
Freigeben: 2025-01-08 08:32:42
Original
227 Leute haben es durchsucht

How to Calculate Date Differences Between Consecutive Rows in SQL?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage