Funcția SQL Lead

Functia Sql Lead



Funcția SQL lead() vă permite să accesați următorul rând din rândul curent la un anumit decalaj. Pe scurt, funcția lead() vă permite să accesați următorul rând din cel curent. Prin specificarea valorii offset, puteți accesa următoarele 1, 2, 3, etc., rânduri din cel curent.

Este opusul funcției lag() care vă permite să accesați rândurile anterioare.







Funcția SQL Lead().

Sintaxa funcției este următoarea:



LEAD(expresie_valoare, offset [, implicit])
Peste (
[PARTITION BY partition_expression]
ORDER BY expresie_sort [ASC | DESC]
);

Următoarele sunt argumentele susținute:



  1. expresie_valoare – Specifică valoarea returnată a rândului precedent. Expresia trebuie să fie evaluată la o singură valoare.
  2. decalaj – Specifică câte rânduri înainte de la rândul curent trebuie accesate.
  3. Mod implicit – Setează valoarea implicită dacă offset-ul este în afara domeniului de aplicare al partiției. În mod implicit, valoarea este setată la NULL.
  4. Împărțire prin – Specifică modul de partiţionare a datelor.
  5. Comandă până la – Setează formatul de ordine pentru rândurile din fiecare partiție.

Eșantion de configurare a datelor

Înainte de a ne aprofunda în funcționarea funcției lead(), să începem prin a configura tabelul de bază în scopuri demonstrative.





produse CREATE TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
nume_produs VARCHAR(255),
categoria VARCHAR(255),
prețul DECIMAL(10, 2),
cantitate INT,
expiration_date DATE,
cod de bare BIGINT
);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori („Pălărie de bucătar 25 cm”,
'brutărie',
24.67,
57,
„2023-09-09”,
2854509564204);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori ('Ouă de prepeliță - Conserve',
'cămară',
17.99,
67,
„2023-09-29”,
1708039594250);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori ('Cafea - Capuccino cu ciurșor de ouă',
'brutărie',
92,53,
10,
„2023-09-22”,
8704051853058);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori („Pere - înțepător”,
'brutărie',
65,29,
48,
„2023-08-23”,
5174927442238);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori ('Paste - Păr de înger',
'cămară',
48,38,
59,
„2023-08-05”,
8008123704782);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori ('Vin - Prosecco Valdobiaddene',
'legume şi fructe',
44.18,
3,
„2023-03-13”,
6470981735653);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori („Pateterie - Mini sortiment francez”,
'cămară',
36,73,
52,
„2023-05-29”,
5963886298051);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori („Portocale - Conservă, Mandarină”,
'legume şi fructe',
65,0,
1,
„2023-04-20”,
6131761721332);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)
valori ('Porc - Umăr',
'legume şi fructe',
55,55,
73,
„2023-05-01”,
9343592107125);

introduce
în
produse (nume_produs,
categorie,
Preț,
cantitate,
data expirării,
cod de bare)

valori ('Dc Hikiage Hira Huba',
'legume şi fructe',
56,29,
53,
„2023-04-14”,
3354910667072);

Exemplul 1:

În acest caz, avem acces la tabelul „produse” care conține informațiile despre produs. Să presupunem că vrem să obținem următorul cod de bare din rândul curent.

Putem folosi funcția lead() după cum urmează:



Să presupunem că avem un tabel care conține informații despre angajat, după cum urmează:

Selectați
numele produsului,
Preț,
conduce (cod de bare) peste (partiție după categorie
comanda de
preţ asc) ca următorul_articol
din
produse p;

Codul dat partiţionează datele în funcţie de categorie. Apoi preia următorul cod de bare din partiție folosind funcția lead().

Rezultatul rezultat este după cum urmează:

Exemplul 2:

Dacă nu există un rând următor într-o coloană specifică (în afara limitelor), funcția setează valoarea la NULL așa cum se arată în exemplul anterior.

Pentru a seta o valoare implicită pentru orice acces în afara domeniului de aplicare, putem face următoarele:

Selectați
numele produsului,
Preț,
conduce (cod de bare, 1, „N/A”) peste (partiție după categorie
comanda de
preţ asc) ca următorul_articol
din
produse p;

Setăm valoarea implicită la „N/A”. Aceasta ar trebui să înlocuiască orice valoare în afara limitei, așa cum se arată în următoarea ieșire:

NOTĂ : Setarea offset-ului la 1 este similar cu a nu specifica nicio valoare.

Exemplul 3:

Să presupunem că doriți să accesați următoarele două rânduri din rândul curent. Putem face asta setând valoarea offset-ului la 2.

Un exemplu de interogare este ilustrat în următoarele:

Selectați
numele produsului,
Preț,
conduce (cod de bare, 2, „N/A”) peste (partiție după categorie
comanda de
preţ asc) ca următorul_articol
din
produse p;

Această interogare returnează următoarele două rânduri din fiecare partiție, așa cum se arată în continuare:

Iată-l!

Concluzie

În acest tutorial, am învățat cum să lucrăm cu funcția lead() pentru a obține următorul articol din rândul curent.