Menu
Coddy logo textTech

LEAD & LAG Functions

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 61 von 72.

Die LEAD- und LAG-Funktionen ermöglichen es uns, den Wert der aktuellen Zeile um n Schritte zurück oder n Schritte vorwärts abzurufen.

Zum Beispiel, wenn wir das Verhältnis des Umsatzes eines Unternehmens für die aktuelle Zeile und einen Monat zuvor berechnen möchten, können wir den Wert aus dem Vormonat extrahieren:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

Dies wird die folgende Tabelle erstellen:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

Auf diese Weise können wir das prev_month_revenue/revenue Verhältnis berechnen.

Wenn wir stattdessen die LEAD-Funktion verwenden würden, würde sie den Umsatz des nächsten Monats für jede Zeile übernehmen:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • <strong>air_conditioners</strong>: <strong>id</strong>, <strong>efficiency</strong>, <strong>strength</strong>, <strong>month</strong>

Vergleichen Sie die Effizienz jedes Klimageräts mit dem vorherigen.

Schreiben Sie eine Abfrage, die die Effizienz jedes Klimageräts zusammen mit der Effizienz des vorherigen installierten Klimageräts (basierend auf id) anzeigt. Berechnen Sie außerdem die Effizienzunterschied zwischen dem aktuellen und dem vorherigen Klimagerät. Ordnen Sie das Ergebnis nach <strong>id</strong> und <strong>efficiency</strong> in aufsteigender Reihenfolge.

Erwartete Ausgabespalten:

  • id
  • efficiency
  • previous_efficiency (mit LAG)
  • efficiency_difference (aktuelle Effizienz - vorherige Effizienz)

Schließlich nach dieser Abfrage filtern Sie die Zeile, in der eine leere previous_efficiency oder eine leere efficiency_difference vorliegt, wie folgt:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency != 0

Spickzettel

Die LAG- und LEAD-Funktionen ermöglichen den Zugriff auf Werte aus vorherigen oder nächsten Zeilen:

LAG-Funktion - holt Wert aus vorheriger Zeile:

LAG(column_name, n) OVER (ORDER BY column)

LEAD-Funktion - holt Wert aus nächster Zeile:

LEAD(column_name, n) OVER (ORDER BY column)

Beispiel zur Verwendung von LAG, um den Umsatz des vorherigen Monats zu erhalten:

SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY month) as prev_month_revenue
FROM table1 ORDER BY id

Beispiel zur Verwendung von LEAD, um den Umsatz des nächsten Monats zu erhalten:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id

Die erste Zeile wird NULL für den LAG-Wert haben, und die letzte Zeile wird NULL für den LEAD-Wert haben.

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen