Funzione finestra LEAD - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzione finestra LEAD

La funzione finestra LEAD restituisce i valori per una riga a una data compensazione sotto (dopo) la riga corrente nella partizione.

Sintassi

LEAD (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )

Argomenti

value_expr

L'espressione o colonna di destinazione su cui viene eseguita la funzione.

offset

Un parametro facoltativo che specifica il numero di righe sotto la riga corrente per le quali restituire i valori. La compensazione può essere un integer costante o un'espressione che valuta un integer. Se non viene specificato un offset, Amazon Redshift utilizza 1 come valore predefinito. Una compensazione di 0 indica la riga corrente.

IGNORE NULLS

Una specifica facoltativa che indica che Amazon Redshift dovrebbe saltare i valori null nella determinazione della riga da utilizzare. I valori null sono inclusi se IGNORE NULLS non è elencato.

Nota

È possibile utilizzare un'espressione NVL o COALESCE per sostituire i valori null con un altro valore. Per ulteriori informazioni, consultare Funzioni NVL e COALESCE.

RESPECT NULLS

Indica che Amazon Redshift dovrebbe includere valori null nella determinazione della riga da utilizzare. RESPECT NULLS è supportato come impostazione predefinita se non si specifica IGNORE NULLS.

OVER

Specifica il partizionamento e l'ordinamento della finestra. La clausola OVER non può contenere una specifica del frame della finestra.

PARTITION BY window_partition

Un argomento facoltativo che imposta l'intervallo di registrazioni per ciascun gruppo nella clausola OVER.

ORDER BY window_ordering

Ordina le righe all'interno di ogni partizione.

La funzione finestra LEAD supporta le espressioni che usano uno dei tipi di dati di Amazon Redshift. Il tipo di restituzione è lo stesso del tipo di dati di value_expr.

Esempi

L'esempio seguente fornisce la commissione per gli eventi nella tabella SALES per cui i biglietti sono stati venduti il 1° gennaio 2008 e il 2 gennaio 2008 e la commissione pagata per le vendite dei biglietti per la vendita successiva. L'esempio seguente utilizza il database di esempio TICKIT. Per ulteriori informazioni, consulta Database di esempio.

SELECT eventid, commission, saletime, LEAD(commission, 1) over ( ORDER BY saletime ) AS next_comm FROM sales WHERE saletime BETWEEN '2008-01-09 00:00:00' AND '2008-01-10 12:59:59' LIMIT 10; +---------+------------+---------------------+-----------+ | eventid | commission | saletime | next_comm | +---------+------------+---------------------+-----------+ | 1664 | 13.2 | 2008-01-09 01:00:21 | 69.6 | | 184 | 69.6 | 2008-01-09 01:00:36 | 116.1 | | 6870 | 116.1 | 2008-01-09 01:02:37 | 11.1 | | 3718 | 11.1 | 2008-01-09 01:05:19 | 205.5 | | 6772 | 205.5 | 2008-01-09 01:14:04 | 38.4 | | 3074 | 38.4 | 2008-01-09 01:26:50 | 209.4 | | 5254 | 209.4 | 2008-01-09 01:29:16 | 26.4 | | 3724 | 26.4 | 2008-01-09 01:40:09 | 57.6 | | 5303 | 57.6 | 2008-01-09 01:40:21 | 51.6 | | 3678 | 51.6 | 2008-01-09 01:42:54 | 43.8 | +---------+------------+---------------------+-----------+

L'esempio seguente fornisce la differenza massima tra la commissione per gli eventi nella tabella SALES e la commissione pagata per la vendita dei biglietti per la vendita successiva dello stesso evento. Questo esempio mostra come utilizzare LEAD con una clausola GROUP BY. Poiché le funzioni della finestra non sono consentite nelle clausole aggregate, questo esempio utilizza una sottoquery. L'esempio seguente utilizza il database di esempio TICKIT. Per ulteriori informazioni, consulta Database di esempio.

SELECT eventid, eventname, max(next_comm_diff) as max_commission_difference FROM ( SELECT sales.eventid, eventname, commission - LEAD(commission, 1) over (ORDER BY sales.eventid, saletime) AS next_comm_diff FROM sales JOIN event ON sales.eventid = event.eventid ) GROUP BY eventid, eventname ORDER BY eventid LIMIT 10 | eventid | eventname | max_commission_difference | +---------+-----------------------------+---------------------------+ | 1 | Gotterdammerung | 7.95 | | 2 | Boris Godunov | 227.85 | | 3 | Salome | 1350.9 | | 4 | La Cenerentola (Cinderella) | 790.05 | | 5 | Il Trovatore | 214.05 | | 6 | L Elisir d Amore | 510.9 | | 7 | Doctor Atomic | 180.6 | | 9 | The Fly | 147 | | 10 | Rigoletto | 186.6 | +---------+-----------------------------+---------------------------+