14th May 2024 Tempo di lettura: 9 minuti Funzione SQL LEAD Agnieszka Kozubek-Krycuń sql imparare sql window functions Indice Che cos'è la funzione SQL LEAD? Sintassi di base della funzione SQL LEAD Esempio 1: utilizzo di base della funzione SQL LEAD Sintassi della funzione LEAD Continua: Parametri opzionali Offset e Default Esempio 2: Offset e argomenti predefiniti Esempio 3: Funzione LEAD con PARTITION BY Esempi pratici di funzione LEAD Esempio pratico 1: Pianificazione degli ordini di farina per la produzione di un panificio Esempio pratico 2: Differenza tra due righe Conclusioni e ulteriori risorse Imparate a conoscere la funzione SQL LEAD, una funzione importante per chiunque lavori con SQL nell'analisi dei dati. Imparate con esempi come utilizzare questa funzione nella pratica. La funzione SQL LEAD è una funzione finestra SQL molto importante e utile. Le funzioni finestra SQL sono essenziali per un'analisi efficiente dei dati. Permettono di lavorare con gruppi di righe e singole righe allo stesso tempo. Semplificano la stesura di rapporti complessi. Sono utili per preparare classifiche, confrontare periodi di tempo diversi, calcolare totali di corsa, medie mobili, lunghezza delle serie e molto altro ancora. Se volete imparare a conoscere le funzioni delle finestre di SQL, date un'occhiata al nostro corsoWindow Functions (Funzioni Finestra) . Include oltre 200 esercizi dettagliati e pratica. È inoltre possibile utilizzare il nostro foglio informativo SQL Window Functions (Funzioni Finestra) per una rapida consultazione. Che cos'è la funzione SQL LEAD? La funzione SQL LEAD è una funzione della finestra SQL che consente di accedere ai dati di una riga successiva e di confrontarli con quelli della riga corrente. Questa funzione è particolarmente utile quando è necessario lavorare con sequenze di dati. Ad esempio, se si stanno esaminando i dati sulle vendite, LEAD può mostrare le vendite di domani accanto a quelle di oggi, tutte in un'unica riga. In questo modo è facile vedere subito i cambiamenti o le tendenze. È possibile utilizzare la funzione LEAD per: Confrontare i dati di vendita da un periodo all'altro. Calcolare la differenza tra i livelli delle scorte da un giorno all'altro. Stimare i valori futuri a fini di budgeting o di previsione. LEAD Questa funzione è simile a LAG, un'altra funzione finestra di SQL. La differenza principale è che LEAD guarda le righe successive, mentre LAG guarda le righe precedenti. Utilizzate LEAD quando volete vedere cosa succederà dopo e LAG quando dovete rivedere cosa è successo prima. Entrambe sono utili per confrontare i dati con le righe vicine. Per esempi di utilizzo delle funzioni LEAD e LAG e per un confronto delle loro capacità, consultare la guida La funzione LAG e la funzione LEAD in SQL. Sintassi di base della funzione SQL LEAD Il modo più semplice per utilizzare la funzione LEAD è con un solo argomento, che specifica la colonna che si desidera esaminare: LEAD(column1) OVER (ORDER BY column2) Ecco una sintesi di questa sintassi: column1: Questa è la colonna da cui si vuole accedere ai dati della riga successiva. OVER: Questa clausola fa parte della sintassi delle funzioni finestra. Deve essere utilizzata con tutte le funzioni finestra. Viene utilizzata per definire la finestra su cui opererà la funzione LEAD. ORDER BY column2: Questa clausola specifica l'ordine di elaborazione delle righe e determina la riga successiva da cui estrarre i dati. La clausola ORDER BY è obbligatoria per LEAD. Questa sintassi consente di ottenere il valore della colonna specificata (column1) nella riga successiva, in base all'ordinamento (ORDER BY column2) definito. Se non esiste una riga successiva, la funzione restituirà NULL. Esempio 1: utilizzo di base della funzione SQL LEAD Vediamo un esempio di base di utilizzo della funzione LEAD. Si supponga di avere una tabella denominata production_schedule con colonne per la data e la quantità di prodotti richiesti: production_datequantity_required 2024-04-01 150 2024-04-02 180 2024-04-03 200 Se si vuole conoscere la quantità necessaria per il giorno successivo, si utilizza la funzione LEAD in questo modo:</P SELECT production_date, quantity_required, LEAD(quantity_required) OVER (ORDER BY production_date) AS next_day_quantity FROM production_schedule; Questa query aggiungerà una colonna che mostra la quantità richiesta per il giorno successivo accanto a quella odierna. production_date quantity_required next_day_quantity 2024-04-01 150 180 2024-04-02 180 200 2024-04-03 200 null Nella nostra query OVER(ORDER BY production_date) ordina le righe per data di produzione. La funzione LEAD esamina la riga successiva a quella corrente e ne ricava il valore quantity_required. La riga successiva a 2024-04-01 è quella di 2024-04-02. La quantità richiesta per 2024-04-02 è 180, e questo è ciò che LEAD restituisce. Se non c'è una riga successiva, la funzione LEAD restituisce NULL: non c'è una riga successiva per 2024-04-03, quindi next_day_quantity è NULL. Sintassi della funzione LEAD Continua: Parametri opzionali Offset e Default La sintassi completa della funzione LEAD prevede altri due argomenti opzionali, offset e default. Essi offrono un maggiore controllo sul comportamento di LEAD. LEAD(column1, offset, default) OVER (... ORDER BY column2) Ecco una sintesi di questa sintassi: column1: Questa è la colonna da cui si vuole accedere ai dati di una riga successiva. offset: Questo parametro intero opzionale specifica quante righe avanti rispetto alla riga corrente si desidera esaminare. Se si omette questo parametro, il valore predefinito è 1, quindi i dati verranno recuperati dalla riga successiva. default: Questo argomento opzionale fornisce un valore predefinito che la funzione restituirà se l'offset specificato supera i limiti del set di risultati. Se omesso, il valore predefinito è NULL. OVER: Questa parola chiave introduce la specifica della finestra, definendo il modo in cui le righe sono raggruppate e ordinate allo scopo di LEAD. ORDER BY column2: Questa clausola specifica l'ordine di elaborazione delle righe. Determina la riga "successiva" da cui estrarre i dati per ogni riga dell'insieme di risultati della query corrente. Esempio 2: Offset e argomenti predefiniti Vediamo un esempio con offset e default. Utilizzando la stessa tabella production_schedule, supponiamo di voler vedere la quantità richiesta non solo per il giorno successivo, ma anche per due giorni prima, e di voler evitare i valori di NULL utilizzando invece 0: SELECT production_date, quantity_required, LEAD(quantity_required, 2, 0) OVER (ORDER BY production_date) AS two_days_later_quantity FROM production_schedule; production_date quantity_required two_days_later_quantity 2024-04-01 150 200 2024-04-02 180 0 2024-04-03 200 0 In questo caso, si fornisce 2 come argomento di offset. In questo modo si indica alla funzione LEAD di guardare due righe avanti, invece della riga successiva. Si dà anche 0 come argomento predefinito. In questo modo la funzione LEAD visualizza 0 invece di NULL quando non c'è una riga successiva da cui estrarre i dati. Esempio 3: Funzione LEAD con PARTITION BY Ovviamente, con la funzione LEAD è possibile utilizzare la sintassi completa delle funzioni finestra. Ad esempio, è possibile combinarla con PARTITION BY. Si supponga che la tabella production_schedule contenga dati relativi a più prodotti. Si vuole fare una previsione separata per ogni prodotto. production_date product_id quantity_required 2024-04-01101150 2024-04-02101180 2024-04-03101200 2024-04-0110290 2024-04-02102110 2024-04-03102120 È possibile partizionare i dati in OVER(), in questo modo: SELECT production_date, product_id, quantity_required, LEAD(quantity_required) OVER (PARTITION BY product_id ORDER BY production_date) AS next_day_quantity FROM production_schedule; Questa query fornisce i requisiti di produzione del giorno successivo per ogni prodotto, mantenendo i calcoli separati per ogni product_id. production_date product_id quantity_required next_day_quantity 2024-04-01 101 150 180 2024-04-02 101 180 200 2024-04-03 101 200 null 2024-04-01 102 90 110 2024-04-02 102 110 120 2024-04-03 102 120 null Esempi pratici di funzione LEAD In questa sezione vedremo esempi pratici di utilizzo della funzione LEAD in situazioni reali. La funzione LEAD è particolarmente utile in campi quali l'analisi delle vendite, la gestione delle scorte e la programmazione della produzione. Esempio pratico 1: Pianificazione degli ordini di farina per la produzione di un panificio Scenario: Un panificio deve pianificare la quantità di farina da ordinare per la produzione di pane. È importante avere ingredienti a sufficienza senza eccedere nelle scorte. I dati relativi alla produzione di pane pianificata sono memorizzati nella tabella daily_bread_production. production_date batches_planned 2024-04-01 20 2024-04-02 25 2024-04-03 30 Sappiamo che ogni lotto ha bisogno di 2 kg di farina. Vogliamo conoscere la domanda di farina per oggi e per domani. Ecco la domanda che potremmo utilizzare: SELECT production_date, batches_planned * 2 AS flour_needed_today_kg, LEAD(batches_planned * 2, 1, 0) OVER (ORDER BY production_date) AS flour_needed_tomorrow_kg FROM daily_bread_production; La query calcola la quantità di farina necessaria per il giorno corrente e il fabbisogno per il giorno successivo utilizzando la funzione LEAD. Ecco il risultato della query: production_date flour_needed_today_kg flour_needed_tomorrow_kg 2024-04-01 40 50 2024-04-02 50 60 2024-04-03 60 null Naturalmente si tratta di un esempio semplificato, ma è facile immaginare come questo tipo di query possa essere utilizzato in un contesto reale per prevedere le risorse necessarie in base al programma di produzione previsto. Esempio pratico 2: Differenza tra due righe Scenario: in un contesto di analisi finanziaria, la funzione LEAD (o LAG) viene utilizzata per calcolare la variazione delle vendite da un giorno all'altro. I dati sulle vendite giornaliere sono memorizzati nella tabella daily_sales. sales_date total_sales 2024-04-01 100 2024-04-02 110 2024-04-03 90 2024-04-04 150 Questa query calcolerà le vendite del giorno successivo, l'aumento dalle vendite di oggi a quelle del giorno successivo e la percentuale di crescita giorno per giorno: SELECT sales_date, total_sales, LEAD(total_sales) OVER (ORDER BY sales_date) AS next_day_sales, LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales AS increase, ROUND(((LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales) / total_sales) * 100, 1) AS percentage_growth FROM daily_sales; Questa query utilizza LEAD per trovare le vendite del giorno successivo. Utilizza poi LEAD e il valore del giorno corrente per calcolare l'aumento. Infine, utilizza LEAD e le vendite di oggi per calcolare la crescita percentuale giornaliera. Ecco il risultato: sales_date total_sales next_day_sales increase percentage_growth 2024-04-01 100 110 10 10.0 2024-04-02 110 90 -20 -18.2 2024-04-03 90 150 60 66.7 2024-04-04 150 null null null Per ulteriori esempi e per un utilizzo dettagliato delle funzioni finestra, consultate l'articolo Esempio di funzione finestra SQL con spiegazioni, che fornisce una prospettiva più ampia e ulteriori scenari. Questa risorsa può aiutarvi ad approfondire la vostra comprensione e a migliorare la vostra capacità di implementare efficacemente le funzioni finestra SQL. Conclusioni e ulteriori risorse Abbiamo esplorato la funzione SQL LEAD, una potente funzione finestra SQL che consente agli analisti di esaminare le righe successive all'interno dei loro set di dati. Abbiamo discusso la sintassi di base della funzione LEAD e ne abbiamo mostrato l'applicazione in vari scenari, come l'andamento delle vendite, la gestione delle scorte e la programmazione della produzione. Per coloro che si avvicinano per la prima volta alle funzioni di finestra, consiglio il corso Window Functions (Funzioni Finestra) . Si tratta di un programma di formazione interattivo e pratico, progettato per familiarizzare con la sintassi completa e le applicazioni delle funzioni finestra di SQL. Include 218 esercizi pratici che vi aiuteranno a padroneggiare i dettagli delle funzioni finestra di SQL. Se desiderate esercitarvi con le funzioni SQL window per consolidare la vostra comprensione, il nostro set di esercitazioni Window Functions (Funzioni Finestra) offre 100 esercizi pratici che metteranno alla prova e consolideranno le vostre conoscenze. Inoltre, il nostro articolo SQL Window Functions (Funzioni Finestra) Practice Exercises fornisce una serie di esercizi selezionati dai nostri corsi per testare le vostre abilità nelle funzioni SQL e darvi un'anticipazione dei nostri corsi. Tags: sql imparare sql window functions