Zurück zur Artikelliste Artikel
9 Leseminuten

SQL LEAD-Funktion

Lernen Sie die SQL LEAD-Funktion kennen, eine wichtige Funktion für jeden, der mit SQL in der Datenanalyse arbeitet. Lernen Sie anhand von Beispielen, wie Sie diese Funktion in der Praxis einsetzen können.

Die Funktion SQL LEAD ist eine sehr wichtige und nützliche SQL-Fensterfunktion. SQL-Fensterfunktionen sind für eine effiziente Datenanalyse unerlässlich. Sie ermöglichen es Ihnen, mit Gruppen von Zeilen und einzelnen Zeilen gleichzeitig zu arbeiten. Sie erleichtern das Schreiben komplexer Berichte. Sie sind hilfreich bei der Erstellung von Ranglisten, beim Vergleich verschiedener Zeiträume, bei der Berechnung von laufenden Summen, gleitenden Durchschnitten, der Länge von Reihen und vielem mehr.

Wenn Sie mehr über SQL-Fensterfunktionen erfahren möchten, besuchen Sie unseren Kurs Fensterfunktionen . Er enthält über 200 detaillierte Übungen und praktische Übungen. Sie können auch unser SQL Fensterfunktionen Cheat Sheet zum schnellen Nachschlagen verwenden.

Was ist eine SQL-LEAD-Funktion?

Die Funktion SQL LEAD ist eine Funktion des SQL-Fensters, mit der Sie auf Daten aus einer nachfolgenden Zeile zugreifen und sie mit der aktuellen Zeile vergleichen können. Dies ist besonders nützlich, wenn Sie mit Datensequenzen arbeiten müssen. Wenn Sie z. B. Umsatzdaten betrachten, kann LEAD Ihnen die Umsätze von morgen direkt neben denen von heute in einer Zeile anzeigen. Auf diese Weise können Sie Änderungen oder Trends sofort erkennen.

Sie können die Funktion LEAD verwenden, um:

  • die Verkaufszahlen von einer Periode zur nächsten zu vergleichen.
  • die Differenz der Lagerbestände von einem Tag auf den anderen zu berechnen.
  • Schätzung zukünftiger Werte für Budgetierungs- oder Prognosezwecke.

LEAD Die Funktion ist ähnlich wie LAG, eine andere SQL-Fensterfunktion. Der Hauptunterschied besteht darin, dass LEAD die kommenden Zeilen betrachtet, während LAG die vorherigen Zeilen betrachtet. Verwenden Sie LEAD, wenn Sie sehen wollen, was als Nächstes passiert, und LAG, wenn Sie überprüfen wollen, was vorher passiert ist. Beide Funktionen sind hilfreich, um Daten mit benachbarten Zeilen zu vergleichen.

Beispiele für die Verwendung der Funktionen LEAD und LAG sowie einen Vergleich ihrer Möglichkeiten finden Sie in unserem Handbuch Die LAG-Funktion und die LEAD-Funktion in SQL.

Grundsyntax der SQL LEAD-Funktion

Die einfachste Art, die Funktion LEAD zu verwenden, ist mit nur einem Argument, das die Spalte angibt, die Sie betrachten möchten:

LEAD(column1) OVER (ORDER BY column2)

Hier ist eine Aufschlüsselung dieser Syntax:

  • column1: Dies ist die Spalte, von der aus Sie auf die Daten in der nächsten Zeile zugreifen wollen.
  • OVER: Diese Klausel ist Teil der Syntax der Fensterfunktionen. Sie müssen sie bei allen Fensterfunktionen verwenden. Sie wird verwendet, um das Fenster zu definieren, in dem die Funktion LEAD arbeiten wird.
  • ORDER BY column2: Diese Klausel legt die Reihenfolge fest, in der die Zeilen verarbeitet werden sollen, und bestimmt die nächste Zeile, aus der Daten entnommen werden sollen. Die ORDER BY-Klausel ist für LEAD obligatorisch.

Diese Syntax holt den Wert aus der angegebenen Spalte (column1) in der nächsten Zeile, basierend auf der festgelegten Reihenfolge (ORDER BY column2). Wenn es keine nächste Zeile gibt, gibt die Funktion NULL zurück.

Beispiel 1: Grundlegende Verwendung der SQL LEAD-Funktion

Schauen wir uns ein einfaches Beispiel für die Verwendung der Funktion LEAD an. Angenommen, Sie haben eine Tabelle mit dem Namen production_schedule, die Spalten für das Datum und die Menge der benötigten Produkte enthält:

production_datequantity_required
2024-04-01 150
2024-04-02 180
2024-04-03 200

Wenn Sie die benötigte Menge für den nächsten Tag wissen wollen, verwenden Sie die Funktion LEAD wie folgt:</P

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required) OVER (ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Diese Abfrage fügt eine Spalte hinzu, in der der Mengenbedarf des nächsten Tages neben dem des heutigen Tages angezeigt wird.

production_date quantity_required next_day_quantity
2024-04-01 150 180
2024-04-02 180 200
2024-04-03 200 null

In unserer Abfrage OVER(ORDER BY production_date) werden die Zeilen nach Produktionsdatum geordnet. Die Funktion LEAD sieht sich die nächste Zeile nach der aktuellen Zeile an und entnimmt ihr den Wert quantity_required. Die nächste Zeile nach 2024-04-01 ist die Zeile für 2024-04-02. Die für 2024-04-02 benötigte Menge ist 180, und dies ist der Wert, den LEAD zurückgibt. Wenn es keine nächste Zeile gibt, gibt die Funktion LEAD NULL zurück: Es gibt keine nächste Zeile für 2024-04-03, also ist next_day_quantity für sie NULL.

LEAD - Beispiel

Syntax der LEAD-Funktion wird fortgesetzt: Optionale Parameter Offset und Default

Die vollständige Syntax der Funktion LEAD enthält zwei weitere optionale Argumente, offset und default. Sie bieten mehr Kontrolle über das Verhalten von LEAD.

LEAD(column1, offset, default) OVER (... ORDER BY column2)

Hier ist eine Aufschlüsselung dieser Syntax:

  • column1: Dies ist die Spalte, von der aus Sie auf Daten in einer nachfolgenden Zeile zugreifen wollen.
  • offset: Dieses optionale ganzzahlige Argument gibt an, wie viele Zeilen vor der aktuellen Zeile Sie die Daten abrufen möchten. Wenn Sie diesen Parameter weglassen, ist er standardmäßig auf 1 gesetzt, so dass die Daten aus der nächsten Zeile geholt werden.
  • default: Dieses optionale Argument gibt einen Standardwert an, den die Funktion zurückgibt, wenn der angegebene Versatz die Grenzen der Ergebnismenge überschreitet. Wenn es weggelassen wird, ist der Standardrückgabewert NULL.
  • OVER: Dieses Schlüsselwort leitet die Fensterspezifikation ein, die festlegt, wie die Zeilen für die Zwecke von LEAD gruppiert und geordnet werden.
  • ORDER BY column2: Diese Klausel legt die Reihenfolge fest, in der die Zeilen verarbeitet werden. Sie bestimmt die "nächste" Zeile, aus der Daten für jede Zeile im Ergebnissatz der aktuellen Abfrage gezogen werden sollen.

Beispiel 2: Offset und Standardargumente

Betrachten wir offset und default in einem Beispiel. Nehmen wir an, Sie möchten unter Verwendung derselben Tabelle production_schedule die benötigte Menge nicht nur für den nächsten Tag, sondern für zwei Tage im Voraus sehen, und Sie möchten die Werte von NULL vermeiden und stattdessen 0 verwenden:

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required, 2, 0) OVER (ORDER BY production_date) AS two_days_later_quantity
FROM
  production_schedule;
production_date quantity_required two_days_later_quantity
2024-04-01 150 200
2024-04-02 180 0
2024-04-03 200 0

Hier geben Sie 2 als Offset-Argument an. Damit wird die Funktion LEAD angewiesen, zwei Zeilen weiter zu suchen, anstatt in der nächsten Zeile. Sie geben auch 0 als Standardargument an. Dies veranlasst die Funktion LEAD, 0 anstelle von NULL anzuzeigen, wenn es keine nachfolgende Zeile gibt, aus der Daten gezogen werden können.

LEAD - Beispiel 2

Beispiel 3: LEAD-Funktion mit PARTITION BY

Natürlich können Sie die vollständige Syntax der Fensterfunktionen mit der Funktion LEAD verwenden. Zum Beispiel können Sie sie mit PARTITION BY kombinieren. Angenommen, Ihre Tabelle production_schedule enthält Daten über mehrere Produkte. Sie möchten für jedes Produkt eine eigene Prognose erstellen.

production_date product_id quantity_required
2024-04-01101150
2024-04-02101180
2024-04-03101200
2024-04-0110290
2024-04-02102110
2024-04-03102120

Sie können Ihre Daten in OVER() partitionieren, etwa so:

SELECT
  production_date,
  product_id,
  quantity_required,
  LEAD(quantity_required) OVER (PARTITION BY product_id ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Mit dieser Abfrage erhalten Sie den Produktionsbedarf des nächsten Tages für jedes Produkt, wobei die Berechnungen für jedes product_id getrennt bleiben.

production_date product_id quantity_required next_day_quantity
2024-04-01 101 150 180
2024-04-02 101 180 200
2024-04-03 101 200 null
2024-04-01 102 90 110
2024-04-02 102 110 120
2024-04-03 102 120 null

Praktische Beispiele für die LEAD-Funktion

In diesem Abschnitt werden wir uns praktische Beispiele für die Verwendung der Funktion LEAD in realen Situationen ansehen. Die Funktion LEAD ist besonders nützlich in Bereichen wie der Verkaufsanalyse, der Bestandsverwaltung und der Produktionsplanung.

Praxisbeispiel 1: Planung von Mehlbestellungen für die Bäckereiproduktion

Szenario: Eine Bäckerei muss planen, wie viel Mehl sie jeweils für die Brotherstellung bestellen muss. Es ist wichtig, dass genügend Zutaten vorhanden sind, ohne dass ein Überbestand entsteht. Die Daten über die geplante Brotproduktion sind in der Tabelle daily_bread_production gespeichert.

production_date batches_planned
2024-04-01 20
2024-04-02 25
2024-04-03 30

Wir wissen, dass für jede Charge 2 kg Mehl benötigt werden. Wir wollen den Mehlbedarf für heute und morgen herausfinden. Hier ist die Abfrage, die wir verwenden könnten:

SELECT
  production_date,
  batches_planned * 2 AS flour_needed_today_kg,
  LEAD(batches_planned * 2, 1, 0) OVER (ORDER BY production_date) AS flour_needed_tomorrow_kg
FROM
  daily_bread_production;

Die Abfrage berechnet die Mehlmenge, die für den aktuellen Tag benötigt wird, und den Bedarf für den nächsten Tag mit Hilfe der Funktion LEAD.

Hier ist das Ergebnis der Abfrage:

production_date flour_needed_today_kg flour_needed_tomorrow_kg
2024-04-01 40 50
2024-04-02 50 60
2024-04-03 60 null

Natürlich ist dies ein vereinfachtes Beispiel, aber Sie können sich leicht vorstellen, wie diese Art von Abfrage in einer realen Umgebung verwendet werden könnte, um die benötigten Ressourcen auf der Grundlage des geplanten Produktionsplans vorherzusagen.

Praktisches Beispiel 2: Differenz zwischen zwei Zeilen

Szenario: In einer Finanzanalyse wird die Funktion LEAD (oder LAG) verwendet, um die Veränderung des Umsatzes von einem Tag zum nächsten zu berechnen. Die Daten über die täglichen Verkäufe sind in der Tabelle daily_sales gespeichert.

sales_date total_sales
2024-04-01 100
2024-04-02 110
2024-04-03 90
2024-04-04 150

Diese Abfrage berechnet die Umsätze des nächsten Tages, den Anstieg von den heutigen Umsätzen zu den Umsätzen des nächsten Tages und den prozentualen Anstieg von Tag zu Tag:

SELECT
  sales_date,
  total_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) AS next_day_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales AS increase,
  ROUND(((LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales) / total_sales) * 100, 1) AS percentage_growth
FROM
  daily_sales;

Diese Abfrage verwendet LEAD, um die Verkäufe des nächsten Tages zu ermitteln. Sie verwendet dann LEAD und den Wert des aktuellen Tages, um den Anstieg zu berechnen. Schließlich verwendet sie LEAD und den Umsatz des heutigen Tages, um den täglichen prozentualen Zuwachs zu berechnen.

Hier ist das Ergebnis:

sales_date total_sales next_day_sales increase percentage_growth
2024-04-01 100 110 10 10.0
2024-04-02 110 90 -20 -18.2
2024-04-03 90 150 60 66.7
2024-04-04 150 null null null

Weitere Beispiele und die detaillierte Verwendung von Fensterfunktionen finden Sie in dem Artikel SQL Fensterfunktionen Beispiele, der eine breitere Perspektive und zusätzliche Szenarien bietet. Diese Ressource kann dazu beitragen, Ihr Verständnis zu vertiefen und Ihre Fähigkeit zu verbessern, SQL-Fensterfunktionen effektiv zu implementieren.

Schlussfolgerung und weitere Ressourcen

Wir haben uns mit der Funktion SQL LEAD beschäftigt, einer leistungsstarken SQL-Fensterfunktion, mit der Analytiker nachfolgende Zeilen in ihren Datensätzen betrachten können. Wir haben die grundlegende Syntax der Funktion LEAD besprochen und ihre Anwendung in verschiedenen Szenarien wie Verkaufstrends, Bestandsverwaltung und Produktionsplanung gezeigt.

Für diejenigen, die gerade erst mit Fensterfunktionen beginnen, empfehle ich unseren Kurs Fensterfunktionen . Es handelt sich um ein interaktives, praxisorientiertes Schulungsprogramm, das Sie mit der vollständigen Syntax und den Anwendungen der SQL-Fensterfunktionen vertraut macht. Er enthält 218 praktische Übungen, die Ihnen helfen werden, die Details der SQL-Fensterfunktionen zu beherrschen.

Wenn Sie SQL-Fensterfunktionen üben möchten, um Ihr Wissen zu festigen, bietet Ihnen unser Fensterfunktionen Practice Set 100 praktische Übungen, die Ihr Wissen herausfordern und festigen werden. Darüber hinaus bietet unser Artikel SQL Fensterfunktionen Praxisübungen eine Reihe von Übungen aus unseren Kursen, um Ihre Kenntnisse über Fensterfunktionen zu testen und Ihnen einen Vorgeschmack auf unsere Kurse zu geben.