Funkcja leadu SQL

Funkcja Leadu Sql



Funkcja SQL lead() umożliwia dostęp do następnego wiersza z bieżącego wiersza z określonym przesunięciem. Krótko mówiąc, funkcja lead() umożliwia dostęp do następnego wiersza z bieżącego. Określając wartość przesunięcia, możesz uzyskać dostęp do kolejnych 1, 2, 3 itd. wierszy z bieżącego.

Jest to przeciwieństwo funkcji lag(), która umożliwia dostęp do poprzednich wierszy.







Funkcja SQL Lead().

Składnia funkcji jest następująca:



LEAD(wyrażenie_wartości, przesunięcie [, domyślne])
NAD (
[PODZIAŁ WEDŁUG wyrażenia_partycji]
ZAMÓW WEDŁUG wyrażenia_sortowania [ASC | OPIS]
);

Oto obsługiwane argumenty:



  1. wyrażenie_wartości – Określa wartość zwracaną z poprzedniego wiersza. Wyrażenie musi mieć jedną wartość.
  2. zrównoważyć – Określa, do ilu wierszy dalej od bieżącego wiersza można uzyskać dostęp.
  3. domyślny – Ustawia wartość domyślną, jeśli przesunięcie znajduje się poza zakresem partycji. Domyślnie wartość jest ustawiona na NULL.
  4. Podział według – Określa sposób partycjonowania danych.
  5. Zamów przez – Ustawia format kolejności wierszy w każdej partycji.

Przykładowa konfiguracja danych

Zanim zagłębimy się w działanie funkcji lead(), zacznijmy od skonfigurowania podstawowej tabeli do celów demonstracyjnych.





UTWÓRZ TABELI produktów (
id_produktu INT KLUCZ PODSTAWOWY AUTO_INCREMENT,
nazwa_produktu VARCHAR(255),
kategoria VARCHAR(255),
cena DZIESIĘTNA(10, 2),
ilość INT,
data_wygaśnięcia DATA,
kod kreskowy BIGINT
);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Kapelusz Szefa Kuchni 25 cm”,
'piekarnia',
24,67,
57,
'2023-09-09',
2854509564204);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Jaja przepiórcze – konserwowe”,
'spiżarnia',
17,99,
67,
„2023-09-29”,
1708039594250);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Kawa - Nog Jajeczny Capuccino”,
'piekarnia',
92,53,
10,
„2023-09-22”,
8704051853058);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Gruszka - Kłująca”,
'piekarnia',
65,29,
48,
„2023-08-23”,
5174927442238);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Makaron - Anielskie Włosy”,
'spiżarnia',
48,38,
59,
'2023-08-05',
8008123704782);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Wino – Prosecco Valdobiaddene”,
'produkować',
44.18,
3,
'2023-03-13',
6470981735653);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Ciasta — Francuskie Mini Mieszane”,
'spiżarnia',
36,73,
52,
'2023-05-29',
5963886298051);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Pomarańczowy – konserwowy, mandaryński”,
'produkować',
65,0,
1,
„2023-04-20”,
6131761721332);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)
wartości („Wieprzowina – Łopatka”,
'produkować',
55,55,
73,
'2023-05-01',
9343592107125);

wstawić
do
produkty (nazwa_produktu,
Kategoria,
cena,
ilość,
termin ważności,
kod kreskowy)

wartości („Dc Hikiage Hira Huba”,
'produkować',
56,29,
53,
'2023-04-14',
3354910667072);

Przykład 1:

W tym przypadku mamy dostęp do tabeli „produkty”, w której znajdują się informacje o produkcie. Załóżmy, że chcemy uzyskać kolejny kod kreskowy z bieżącego wiersza.

Funkcji lead() możemy użyć w następujący sposób:



Załóżmy, że mamy tabelę zawierającą następujące informacje o pracownikach:

wybierać
Nazwa produktu,
cena,
lead(kod kreskowy) over (podział według kategorii
Zamów przez
cena rosnąca) jako next_item
z
produkty p;

Podany kod dzieli dane na podstawie kategorii. Następnie pobiera następny kod kreskowy z partycji za pomocą funkcji lead().

Wynikowy wynik jest następujący:

Przykład 2:

Jeśli w określonej kolumnie nie ma następnego wiersza (poza granicą), funkcja ustawia wartość na NULL, jak pokazano w poprzednim przykładzie.

Aby ustawić wartość domyślną dla dostępu spoza zakresu, możemy wykonać następujące czynności:

wybierać
Nazwa produktu,
cena,
lead(kod kreskowy, 1, 'nie dotyczy') over (podział według kategorii
Zamów przez
cena rosnąca) jako next_item
z
produkty p;

Ustawiamy wartość domyślną na „Nie dotyczy”. Powinno to zastąpić każdą wartość wykraczającą poza zakres, jak pokazano w następujących wynikach:

NOTATKA : Ustawienie przesunięcia na 1 jest podobne do nieokreślenia żadnej wartości.

Przykład 3:

Załóżmy, że chcesz uzyskać dostęp do dwóch kolejnych wierszy bieżącego wiersza. Możemy to zrobić, ustawiając wartość przesunięcia na 2.

Przykładowe zapytanie przedstawiono poniżej:

wybierać
Nazwa produktu,
cena,
lead(kod kreskowy, 2, 'nie dotyczy') over (podział według kategorii
Zamów przez
cena rosnąca) jako next_item
z
produkty p;

To zapytanie zwraca kolejne dwa wiersze w każdej partycji, jak pokazano poniżej:

Masz to!

Wniosek

W tym samouczku nauczyliśmy się, jak korzystać z funkcji lead(), aby pobrać następny element z bieżącego wiersza.