Funzione lead SQL

Funzione Lead Sql



La funzione SQL lead() consente di accedere alla riga successiva dalla riga corrente con un offset specifico. In breve, la funzione lead() consente di accedere alla riga successiva a quella corrente. Specificando il valore di offset, è possibile accedere alle righe successive 1, 2, 3, ecc. da quella corrente.

È l'opposto della funzione lag() che consente di accedere alle righe precedenti.







Funzione SQL Lead()

La sintassi della funzione è la seguente:



LEAD(espressione_valore, offset [, predefinito])
SOPRA (
[PARTIZIONE PER espressione_partizione]
ORDER BY sort_expression [ASC | DESC]
);

Di seguito sono riportati gli argomenti supportati:



  1. valore_espressione – Specifica il valore restituito dalla riga precedente. L'espressione deve restituire un singolo valore.
  2. compensare – Specifica quante righe in avanti dalla riga corrente a cui accedere.
  3. predefinito – Imposta il valore predefinito se l'offset non rientra nell'ambito della partizione. Per impostazione predefinita, il valore è impostato su NULL.
  4. Partizione per – Specifica come partizionare i dati.
  5. Ordinato da – Imposta il formato dell'ordine per le righe in ciascuna partizione.

Impostazione dei dati di esempio

Prima di approfondire il funzionamento della funzione lead(), iniziamo impostando la tabella di base a scopo dimostrativo.





prodotti CREA TAVOLA (
product_id INT CHIAVE PRIMARIA AUTO_INCREMENT,
nome_prodotto VARCHAR(255),
categoria VARCHAR(255),
prezzo DECIMALE(10, 2),
quantità INT,
data_scadenza DATA,
codice a barre BIGINT
);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Cappello da cuoco 25 cm',
'forno',
24.67,
57,
'09-09-2023',
2854509564204);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Uova di quaglia - in scatola',
'dispensa',
17:99,
67,
'29-09-2023',
1708039594250);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Caffè - Egg Nog Capuccino',
'forno',
92,53,
10,
'22-09-2023',
8704051853058);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Pera - Spinoso',
'forno',
65.29,
48,
'23-08-2023',
5174927442238);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Pasta - Capelli d'angelo',
'dispensa',
48.38,
59,
'05-08-2023',
8008123704782);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
values ('Wine - Prosecco Valdobiaddene',
'produrre',
44.18,
3,
'13-03-2023',
6470981735653);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Pasticceria - Mini Francese Assortita',
'dispensa',
36,73,
52,
'29-05-2023',
5963886298051);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Arancia - In scatola, Mandarino',
'produrre',
65,0,
1,
'20/04/2023',
6131761721332);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ('Maiale - Spalla',
'produrre',
55,55,
73,
'2023-05-01',
9343592107125);

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)

valori ('Dc Hikiage Hira Huba',
'produrre',
56.29,
53,
'2023-04-14',
3354910667072);

Esempio 1:

In questo caso abbiamo accesso alla tabella “prodotti” che contiene le informazioni sul prodotto. Supponiamo di voler ottenere il codice a barre successivo dalla riga corrente.

Possiamo usare la funzione lead() come segue:



Supponiamo di avere una tabella che contiene le informazioni di un dipendente come segue:

Selezionare
nome del prodotto,
prezzo,
lead(codice a barre) su (partizione per categoria
ordinato da
prezzo asc) come next_item
da
prodotti p;

Il codice fornito suddivide i dati in base alla categoria. Quindi recupera il codice a barre successivo nella partizione utilizzando la funzione lead().

L'output risultante è il seguente:

Esempio 2:

Se non è presente alcuna riga successiva in una colonna specifica (fuori limite), la funzione imposta il valore su NULL come mostrato nell'esempio precedente.

Per impostare un valore predefinito per qualsiasi accesso fuori ambito, possiamo fare quanto segue:

Selezionare
nome del prodotto,
prezzo,
lead(codice a barre, 1, 'N/A') over (partizione per categoria
ordinato da
prezzo asc) come next_item
da
prodotti p;

Impostiamo il valore predefinito su 'N/A'. Questo dovrebbe sostituire qualsiasi valore fuori limite come mostrato nel seguente output:

NOTA : Impostare l'offset su 1 equivale a non specificare alcun valore.

Esempio 3:

Supponiamo di voler accedere alle due righe successive dalla riga corrente. Possiamo farlo impostando il valore di offset su 2.

Una query di esempio è illustrata di seguito:

Selezionare
nome del prodotto,
prezzo,
lead(codice a barre, 2, 'N/A') over (partizione per categoria
ordinato da
prezzo asc) come next_item
da
prodotti p;

Questa query restituisce le due righe successive in ciascuna partizione, come mostrato di seguito:

Ecco qua!

Conclusione

In questo tutorial abbiamo imparato come lavorare con la funzione lead() per ottenere l'elemento successivo dalla riga corrente.