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:
- 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.
- 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.
- vaikeväärtus – see parameeter määrab vaikeväärtuse, kui antud nihkeväärtus jääb sihtpartitsiooni ulatusest välja. Vaikimisi tagastab funktsioon NULL.
- PARTITION BY – partitsiooni_by-klausel määratleb reeglid, mis jagavad tulemuskomplekti erinevateks osadeks. Seejärel rakendatakse funktsiooni igale saadud partitsioonile.
- 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().
valitootenimi,
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:
valitootenimi,
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.