SQL Serveri LEAD() funktsioon

Sql Serveri Lead Funktsioon



Selles artiklis tutvustame teile SQL Serveri funktsiooni lead() kasutamise põhitõdesid. Käsitleme funktsiooni toimimist, selle süntaksit ja praktilisi näiteid selle kasutamisest.

SQL Serveri juhtfunktsioon

Juhtfunktsioon SQL Serveris on analüütiline funktsioon, mis võimaldab teil pääseda juurde sama tulemuskomplekti järgmise rea andmetele ilma iseliitmiseta.

Funktsioon võimaldab teil pääseda juurde antud reale eelnevale reale etteantud nihkega reale. Näiteks juhtfunktsiooni kasutades leiate rea kohe jooksva rea ​​järel, 10. rea praegusest reast jne.







See funktsioon sunnib andmebaasi arendajaid tegema ridade võrdlusi ilma keeruliste ülesanneteta, nagu liitumine, vaadete kasutamine jne.



Funktsiooni süntaks

Järgmine kujutab funktsiooni lead() süntaksit SQL Serveris:



LEAD (skalaarne_avaldis [,nihe], [vaikeseade])
OVER ( [ partitsioon_klausli järgi ] järjestus klausli järgi )

Järgmises loendis on toetatud argumendid ja nende funktsionaalsus:





  1. skalaaravaldis – see argument tähistab määratud nihke alusel tagastatavat väärtust. See võib olla mis tahes tüüpi avaldis, mis tagastab ühe väärtuse. Kuid skalaaravaldise väärtus ei saa olla teine ​​​​analüütiline/aknafunktsioon.
  2. nihe – see määrab, mitu rida praegusest reast väärtus tuuakse. Vaikimisi toob funktsioon rea omadussõna kohe praegusele reale. Samamoodi ei saa nihkeparameetri väärtus olla analüütiline funktsioon ega negatiivne täisarv.
  3. vaikeväärtus – see parameeter määrab vaikeväärtuse, kui antud nihkeväärtus jääb sihtpartitsiooni ulatusest välja. Vaikimisi tagastab funktsioon NULL.
  4. PARTITION BY – partitsiooni_by-klausel määratleb reeglid, mis jagavad tulemuskomplekti erinevateks osadeks. Seejärel rakendatakse funktsiooni igale saadud partitsioonile.
  5. ORDER BY – see määrab loogilise järjestuse, milles iga partitsiooni ridu rakendatakse.

Funktsioon tagastab skalaariavaldises määratletud andmetüübi. Kui tagastatav väärtus on NULL, tagastab funktsioon NULL.

Näidisandmed

Kasutagem mõningaid näidisandmebaase, et illustreerida parimat juhtfunktsiooni kasutamist. Esiteks kasutage päringuid, nagu allpool näidatud:



ANDMEBAASI LOPPIMINE, KUI laoseisu ON OLEMAS;

LOO ANDMEBAASI inventar;

KASUTADA inventuuri;

Tooted OLEMAS KUI LASTA TABLE;

CREATE TABLE tooted (
id int identiteedi primaarvõti pole null,
toote_nimi varchar(100),
tootja varchar(50),
kogus ei ole null,
hind vaikimisi 0,
laos natuke
);
sisestage toodetesse (toote_nimi, tootja, kogus, hind, laos)
väärtused ('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' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
(„Odyssey Ark Quantum Mini-LED kõverjooneline mänguekraan”, „Samsung”, 50, 2999.90, 1);

Saadud tabel on järgmine:

Näide 1 – SQL Serveri lead() funktsiooni kasutamine tulemuskomplekti kohal

Allolev näide kasutab järgmise toote hinna tagastamiseks funktsiooni lead().

vali
tootenimi,
tootja,
kogus,
hind,
plii (hind,
1) üle (
tellida koguse järgi)
alates
tooted;

Tulemustabel:

Kuna viimasest veerust pole rida, tagastab funktsioon NULL.

Näide 2 – SQL Serveri juhtfunktsiooni () kasutamine partitsioonikomplekti kohal

Saame tuua ka järgmise toote antud partitsioonis. Näiteks saame ülaltoodud andmed tootja põhjal partitsioonideks jagada ja igas partitsioonis rakendada funktsiooni lead().

Illustratsiooni näide on järgmine:

vali
tootenimi,
tootja,
kogus,
hind,
plii (hind,
1) üle (
partitsioon tootja järgi
tellida koguse järgi)
alates
tooted;

Ülaltoodud päring peaks jagama read tootja põhjal ja tooma iga partitsiooni väärtuste jaoks järgmise hinna.

Sel juhul on kolm partitsiooni.

Järeldus

Selles postituses mõistsite SQL Serveri funktsiooni lead() ehitusplokke. Samuti õppisite, kuidas kasutada funktsiooni lead() tulemuse ja partitsioonikomplekti üle.