La funció SQL lead() us permet accedir a la fila següent des de la fila actual amb un desplaçament específic. En resum, la funció lead() us permet accedir a la fila següent des de l'actual. Si especifiqueu el valor de compensació, podeu accedir a les següents files 1, 2, 3, etc. de l'actual.
És el contrari de la funció lag() que us permet accedir a les files anteriors.
Funció SQL Lead().
La sintaxi de la funció és la següent:
LEAD(expressió_valor, desplaçament [, predeterminat])
ACABAT (
[PARTICIÓ PER expressió_partició]
ORDENA PER expressió_ordenar [ASC | DESC]
);
Els arguments recolzats són els següents:
- expressió_valor – Especifica el valor de retorn de la fila anterior. L'expressió s'ha d'avaluar en un sol valor.
- compensació – Especifica quantes files cap endavant des de la fila actual a accedir.
- per defecte – Estableix el valor per defecte si el desplaçament està fora de l'abast de la partició. Per defecte, el valor s'estableix en NULL.
- Partició per – Especifica com particionar les dades.
- Demanat per – Estableix el format d'ordre de les files de cada partició.
Configuració de dades de mostra
Abans de submergir-nos en el funcionament de la funció lead(), comencem configurant la taula bàsica amb finalitats de demostració.
productes CREATE TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
nom_producte VARCHAR(255),
categoria VARCHAR(255),
preu DECIMAL(10, 2),
quantitat INT,
data_caducitat DATE,
codi de barres BIGINT
);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Barret de xef 25 cm',
'fleca',
24.67,
57,
'2023-09-09',
2854509564204);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Ous de guatlla - Enllauna',
'rebost',
17.99,
67,
'2023-09-29',
1708039594250);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Cafè - Capuccino d'ou',
'fleca',
92.53,
10,
'2023-09-22',
8704051853058);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Pera - Espinosa',
'fleca',
65.29,
48,
'2023-08-23',
5174927442238);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Pasta - cabell d'àngel',
'rebost',
48.38,
59,
'2023-08-05',
8008123704782);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Vi - Prosecco Valdobiaddene',
'produir',
44.18,
3,
'2023-03-13',
6470981735653);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Pastiseria - Assortit mini francès',
'rebost',
36.73,
52,
'2023-05-29',
5963886298051);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Taronja - Enllauna, Mandarí',
'produir',
65.0,
1,
'2023-04-20',
6131761721332);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Porc - Espatlla',
'produir',
55.55,
73,
'2023-05-01',
9343592107125);
inserir
a
productes (nom_producte,
categoria,
preu,
quantitat,
data de caducitat,
codi de barres)
valors ('Dc Hikiage Hira Huba',
'produir',
56.29,
53,
'2023-04-14',
3354910667072);
Exemple 1:
En aquest cas, tenim accés a la taula 'productes' que conté la informació del producte. Suposem que volem obtenir el següent codi de barres de la fila actual.
Podem utilitzar la funció lead() de la següent manera:
Suposem que tenim una taula que conté la informació d'un empleat de la següent manera:
seleccionarnom del producte,
preu,
conduir (codi de barres) sobre (partició per categoria
demanat per
preu asc) com a article_següent
des de
productes p;
El codi donat divideix les dades en funció de la categoria. A continuació, obté el següent codi de barres a la partició mitjançant la funció lead().
La sortida resultant és la següent:
Exemple 2:
Si no hi ha cap fila següent en una columna específica (fora de límit), la funció estableix el valor a NULL tal com es mostra a l'exemple anterior.
Per establir un valor predeterminat per a qualsevol accés fora de l'àmbit, podem fer el següent:
seleccionarnom del producte,
preu,
lead(codi de barres, 1, 'N/A') sobre (partició per categoria
demanat per
preu asc) com a article_següent
des de
productes p;
Definim el valor per defecte a 'N/A'. Això hauria de substituir qualsevol valor fora de límit tal com es mostra a la sortida següent:
NOTA : establir el desplaçament a 1 és semblant a no especificar cap valor.
Exemple 3:
Suposem que voleu accedir a les dues files següents des de la fila actual. Ho podem fer establint el valor de compensació a 2.
A continuació s'il·lustra un exemple de consulta:
seleccionarnom del producte,
preu,
lead(codi de barres, 2, 'N/A') sobre (partició per categoria
demanat per
preu asc) com a article_següent
des de
productes p;
Aquesta consulta retorna les dues files següents a cada partició, tal com es mostra a continuació:
Aquí ho tens!
Conclusió
En aquest tutorial, hem après a treballar amb la funció lead() per obtenir el següent element de la fila actual.