SQL Server LEAD() Functie

Sql Server Lead Functie



In dit artikel zullen we u door de grondbeginselen van het werken met de functie lead() in SQL Server leiden. We behandelen wat de functie doet, de syntaxis ervan en praktische voorbeelden van het gebruik ervan.

Hoofdfunctie SQL Server

De lead-functie in SQL Server is een analytische functie waarmee u zonder self-join toegang kunt krijgen tot gegevens uit een volgende rij in dezelfde resultatenset.

De functie stelt u in staat om toegang te krijgen tot een rij met een gegeven offset voorafgaand aan de huidige rij. Als u bijvoorbeeld de lead-functie gebruikt, kunt u de rij onmiddellijk na de huidige rij vinden, de 10e rij vanaf de huidige rij, enz.







Deze functie drijft database-ontwikkelaars aan om rijvergelijkingen uit te voeren zonder complexe taken zoals samenvoegen, weergaven gebruiken, enz.



Functie syntaxis

Het volgende geeft de syntaxis weer van de functie lead() in SQL Server:



LEAD (scalaire_expressie [,offset], [standaard])
OVER ( [ partitie_door_clausule ] order_door_clausule )

De volgende lijst bevat de ondersteunde argumenten en hun functionaliteit:





  1. scalaire_expressie - dit argument geeft de geretourneerde waarde aan op basis van de gedefinieerde offset. Dit kan een uitdrukking van elk type zijn die een enkele waarde retourneert. De waarde van de scalaire_expressie kan echter geen andere analytische/vensterfunctie zijn.
  2. offset - dit stelt in hoeveel rijen van de huidige rijpositie de waarde heeft opgehaald. Standaard haalt de functie de rij onmiddellijk op bijvoeglijk naamwoord voor de huidige rij. Evenzo kan de waarde van de parameter offset geen analytische functie of een negatief geheel getal zijn.
  3. standaard – deze parameter stelt de standaardwaarde in als de opgegeven offsetwaarde buiten het bereik van de doelpartitie valt. Standaard retourneert de functie NULL.
  4. PARTITION BY – de partition_by-clausule definieert de regels die de resultatenset in verschillende secties verdelen. De functie wordt vervolgens toegepast op elke resulterende partitie.
  5. ORDER BY – dit definieert de logische volgorde waarin de rijen in elke partitie worden toegepast.

De functie retourneert het gegevenstype dat is gedefinieerd in de scalaire_expressie. Als de geretourneerde waarde NULL is, retourneert de functie NULL.

Voorbeeld gegevens

Laten we enkele voorbeelddatabases gebruiken om het beste te illustreren hoe u de leadfunctie kunt gebruiken. Gebruik eerst de query's zoals hieronder weergegeven:



DROP DATABASE INDIEN BESTAAT inventaris;

CREATE DATABASE-inventaris;

GEBRUIK inventaris;

DROP TAFEL INDIEN BESTAAT producten;

CREATE TABLE producten (
id int identiteit primaire sleutel niet null,
productnaam varchar(100),
fabrikant varchar(50),
hoeveelheid int niet null,
prijs int standaard 0,
in_stock beetje
);
invoegen in producten (product_name, fabrikant, hoeveelheid, prijs, in_stock)
waarden ('Apple iPad Air', 'Apple', 100, 569.99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony', 500, 499.99, 1),
('Samsung Galaxy Watch-5 Pro', 'Samsung', 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379.90, 1),
('Apple AirPods Pro', 'Apple', 200, 199.99, 1),
('55' Klasse S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED gebogen gamingscherm', 'Samsung', 50, 2999.90, 1);

De resulterende tabel is zoals weergegeven:

Voorbeeld 1 – De functie lead() van SQL Server gebruiken voor een resultatenset

In het onderstaande voorbeeld wordt de functie lead() gebruikt om de prijs van het volgende product te retourneren.

selecteren
productnaam,
fabrikant,
hoeveelheid,
prijs,
lood(prijs,
1) meer dan (
bestellen op aantal)
van
producten;

resulterende tabel:

Aangezien er geen rij is vanaf de laatste kolom, retourneert de functie NULL.

Voorbeeld 2 – De functie lead() van SQL Server gebruiken via een partitieset

We kunnen ook het volgende product in een bepaalde partitie ophalen. We kunnen bijvoorbeeld de bovenstaande gegevens partitioneren op basis van de fabrikant en de functie lead() toepassen in elke partitie

Een voorbeeldillustratie is zoals getoond:

selecteren
productnaam,
fabrikant,
hoeveelheid,
prijs,
lood(prijs,
1) meer dan (
partitie per fabrikant
bestellen op aantal)
van
producten;

De bovenstaande query zou de rijen moeten verdelen op basis van de fabrikant en de volgende prijs voor de waarden in elke partitie moeten ophalen.

In dit geval zijn er drie partities.

Conclusie

In dit bericht heb je de bouwstenen van de functie lead() in SQL Server begrepen. U hebt ook geleerd hoe u de functie lead() kunt gebruiken voor een resultaat- en partitieset.