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:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idDies wird die folgende Tabelle erstellen:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
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| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Aufgabe
EinfachVerfü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:
idefficiencyprevious_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 != 0Spickzettel
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 idBeispiel 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 idDie 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns