Funzione principale di SQL Server
La funzione lead in SQL Server è una funzione analitica che consente di accedere ai dati da una riga successiva nello stesso set di risultati senza un self-join.
La funzione consente di accedere a una riga a un determinato offset precedente alla riga corrente. Ad esempio, utilizzando la funzione lead, puoi trovare la riga immediatamente successiva alla riga corrente, la decima riga dalla riga corrente, ecc.
Questa funzione spinge gli sviluppatori di database a eseguire confronti di righe senza attività complesse come l'unione, l'utilizzo di viste, ecc.
Funzione Sintassi
Quanto segue illustra la sintassi della funzione lead() in SQL Server:
LEAD (espressione_scalare [, offset], [predefinito])
SOPRA ( [ partizione_per_clausola ] ordine_per_clausola )
L'elenco successivo è gli argomenti supportati e la loro funzionalità:
- scalar_expression – questo argomento denota il valore restituito in base all'offset definito. Può essere un'espressione di qualsiasi tipo che restituisce un singolo valore. Tuttavia, il valore di scalar_expression non può essere un'altra funzione analitica/finestra.
- offset: imposta quante righe dalla riga corrente posizionano il valore recuperato. Per impostazione predefinita, la funzione recupererà la riga immediatamente aggettivo alla riga corrente. Analogamente, il valore del parametro offset non può essere una funzione analitica o un numero intero negativo.
- default: questo parametro imposta il valore predefinito se il valore di offset fornito è oltre l'ambito della partizione di destinazione. Per impostazione predefinita, la funzione restituirà NULL.
- PARTITION BY – la clausola partition_by definisce le regole che suddividono il set di risultati in varie sezioni. La funzione viene quindi applicata a ciascuna partizione risultante.
- ORDER BY – definisce l'ordine logico in cui vengono applicate le righe in ciascuna partizione.
La funzione restituisce il tipo di dati definito in scalar_expression. Se il valore restituito è NULL, la funzione restituisce NULL.
Dati di esempio
Usiamo alcuni database di esempio per illustrare meglio come utilizzare la funzione lead. Innanzitutto, utilizza le query come mostrato di seguito:
DROP DATABASE SE ESISTE inventario;
CREA DATABASE inventario;
USA l'inventario;
DROP TABELLA SE ESISTE prodotti;
CREA TABELLA prodotti (
id int identità chiave primaria non nullo,
nome_prodotto varchar(100),
produttore varchar(50),
quantità int non nulla,
prezzo int predefinito 0,
bit in_stock
);
inserire nei prodotti (nome_prodotto, produttore, quantità, prezzo, in_stock)
valori ('Apple iPad Air', 'Apple', 100, 569.99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony', 500, 499,99, 1),
('Samsung Galaxy Watch-5 Pro', 'Samsung', 600, 209/.99, 1),
('Apple Watch serie 6', 'Apple', 459, 379,90, 1),
('Apple AirPods Pro', 'Apple', 200, 199,99, 1),
('55' Classe S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED Curved Gaming Screen', 'Samsung', 50, 2999.90, 1);
La tabella risultante è quella mostrata:
Esempio 1: utilizzo della funzione lead() di SQL Server su un set di risultati
L'esempio seguente utilizza la funzione lead() per restituire il prezzo del prodotto successivo.
Selezionarenome del prodotto,
produttore,
quantità,
prezzo,
piombo (prezzo,
1) oltre (
ordinare per quantità)
da
prodotti;
Tabella risultante:
Poiché non vi è alcuna riga dall'ultima colonna, la funzione restituisce NULL.
Esempio 2: utilizzo della funzione lead() di SQL Server su un set di partizioni
Possiamo anche recuperare il prodotto successivo in una data partizione. Ad esempio, possiamo partizionare i dati sopra in base al produttore e applicare la funzione lead() in ogni partizione
Un'illustrazione di esempio è come mostrato:
Selezionarenome del prodotto,
produttore,
quantità,
prezzo,
piombo (prezzo,
1) oltre (
partizione per produttore
ordinare per quantità)
da
prodotti;
La query sopra dovrebbe dividere le righe in base al produttore e recuperare il prezzo successivo per i valori in ciascuna partizione.
In questo caso, ci sono tre partizioni.
Conclusione
In questo post, hai compreso gli elementi costitutivi della funzione lead() in SQL Server. Hai anche imparato come utilizzare la funzione lead() su un risultato e un set di partizioni.