SQL-Lead-Funktion

Sql Lead Funktion



Mit der SQL-Funktion „lead()“ können Sie von der aktuellen Zeile aus mit einem bestimmten Offset auf die nächste Zeile zugreifen. Kurz gesagt: Mit der Funktion „lead()“ können Sie von der aktuellen Zeile aus auf die nächste Zeile zugreifen. Durch Angabe des Offset-Werts können Sie von der aktuellen auf die nächsten 1, 2, 3 usw. Zeilen zugreifen.

Es ist das Gegenteil der Funktion lag(), die Ihnen den Zugriff auf die vorherigen Zeilen ermöglicht.







SQL Lead()-Funktion

Die Funktionssyntax lautet wie folgt:



LEAD(value_expression, offset [, default])
ÜBER (
[PARTITION VON partition_expression]
ORDER BY sort_expression [ASC | BESCHREIBUNG]
);

Die folgenden Argumente werden unterstützt:



  1. Wert_Ausdruck – Es gibt den Rückgabewert der vorhergehenden Zeile an. Der Ausdruck muss einen einzelnen Wert ergeben.
  2. versetzt – Gibt an, auf wie viele Zeilen von der aktuellen Zeile aus zugegriffen werden soll.
  3. Standard – Es legt den Standardwert fest, wenn der Offset außerhalb des Bereichs der Partition liegt. Standardmäßig ist der Wert auf NULL gesetzt.
  4. Partitionieren nach – Es gibt an, wie die Daten partitioniert werden.
  5. Sortieren nach – Es legt das Reihenfolgeformat für die Zeilen in jeder Partition fest.

Beispieldaten-Setup

Bevor wir uns mit der Funktionsweise der Funktion „lead()“ befassen, beginnen wir mit dem Einrichten der Basistabelle zu Demonstrationszwecken.





CREATE TABLE-Produkte (
produkt_id INT PRIMÄRSCHLÜSSEL AUTO_INCREMENT,
Produktname VARCHAR(255),
Kategorie VARCHAR(255),
Preis DECIMAL(10, 2),
Menge INT,
expiration_date DATUM,
Barcode BIGINT
);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Kochmütze 25 cm“,
'Bäckerei',
24,67,
57,
'09.09.2023',
2854509564204);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Wachteleier – Konserviert“,
'Speisekammer',
17,99,
67,
'29.09.2023',
1708039594250);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Kaffee – Eierlikör Capuccino“,
'Bäckerei',
92,53,
10,
'22.09.2023',
8704051853058);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Birne – Stachelig“,
'Bäckerei',
65,29,
48,
'23.08.2023',
5174927442238);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Pasta – Engelshaar“,
'Speisekammer',
48,38,
59,
'2023-08-05',
8008123704782);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Wein – Prosecco Valdobiaddene“,
'produzieren',
44,18,
3,
'2023-03-13',
6470981735653);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Gebäck – Französisches Mini-Sortiment“,
'Speisekammer',
36,73,
52,
'29.05.2023',
5963886298051);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte („Orange – Konserviert, Mandarine“,
'produzieren',
65,0,
1,
„20.04.2023“,
6131761721332);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ('Schweinefleisch - Schulter',
'produzieren',
55,55,
73,
'01.05.2023',
9343592107125);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)

Werte ('Dc Hikiage Hira Huba',
'produzieren',
56,29,
53,
'2023-04-14',
3354910667072);

Beispiel 1:

In diesem Fall haben wir Zugriff auf die Tabelle „Produkte“, die die Produktinformationen enthält. Angenommen, wir möchten den nächsten Barcode aus der aktuellen Zeile abrufen.

Wir können die Funktion „lead()“ wie folgt verwenden:



Angenommen, wir haben eine Tabelle, die folgende Mitarbeiterinformationen enthält:

wählen
Produktname,
Preis,
Lead(Barcode) über (Partition nach Kategorie
Sortieren nach
Preis aufsteigend) als next_item
aus
Produkte p;

Der angegebene Code partitioniert die Daten basierend auf der Kategorie. Anschließend wird mithilfe der Funktion „lead()“ der nächste Barcode in der Partition abgerufen.

Die resultierende Ausgabe lautet wie folgt:

Beispiel 2:

Wenn es in einer bestimmten Spalte keine nächste Zeile gibt (außerhalb der Grenze), setzt die Funktion den Wert auf NULL, wie im vorherigen Beispiel gezeigt.

Um einen Standardwert für jeden Zugriff außerhalb des Gültigkeitsbereichs festzulegen, können wir Folgendes tun:

wählen
Produktname,
Preis,
Lead(Barcode, 1, 'N/A') über (Partition nach Kategorie
Sortieren nach
Preis aufsteigend) als next_item
aus
Produkte p;

Wir setzen den Standardwert auf „N/A“. Dies sollte alle außerhalb des zulässigen Bereichs liegenden Werte ersetzen, wie in der folgenden Ausgabe gezeigt:

NOTIZ : Das Festlegen des Offsets auf 1 ähnelt der Angabe keines Werts.

Beispiel 3:

Angenommen, Sie möchten von der aktuellen Zeile aus auf die nächsten beiden Zeilen zugreifen. Das können wir erreichen, indem wir den Offset-Wert auf 2 setzen.

Eine Beispielabfrage ist im Folgenden dargestellt:

wählen
Produktname,
Preis,
Lead(Barcode, 2, 'N/A') über (Partition nach Kategorie
Sortieren nach
Preis aufsteigend) als next_item
aus
Produkte p;

Diese Abfrage gibt die nächsten beiden Zeilen in jeder Partition zurück, wie im Folgenden gezeigt:

Hier hast du es!

Abschluss

In diesem Tutorial haben wir gelernt, wie man mit der Funktion „lead()“ arbeitet, um das nächste Element aus der aktuellen Zeile abzurufen.