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 LAG
La funzione finestra LAG restituisce i valori per una riga a una data compensazione sopra (prima) la riga corrente nella partizione.
Sintassi
LAG (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 prima della 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 di0
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 LAG 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 mostra la quantità di biglietti venduti all'acquirente con un ID acquirente di 3 e il tempo in cui l'acquirente 3 ha acquistato i biglietti. Per confrontare ogni vendita con la vendita precedente per l'acquirente 3, la query restituisce la quantità venduta per ogni vendita precedente. Poiché non è stato effettuato alcun acquisto prima del 16/01/2008, il primo valore venduto precedentemente è null:
select buyerid, saletime, qtysold,
lag(qtysold,1) over (order by buyerid, saletime) as prev_qtysold
from sales where buyerid = 3 order by buyerid, saletime;
buyerid | saletime | qtysold | prev_qtysold
---------+---------------------+---------+--------------
3 | 2008-01-16 01:06:09 | 1 |
3 | 2008-01-28 02:10:01 | 1 | 1
3 | 2008-03-12 10:39:53 | 1 | 1
3 | 2008-03-13 02:56:07 | 1 | 1
3 | 2008-03-29 08:21:39 | 2 | 1
3 | 2008-04-27 02:39:01 | 1 | 2
3 | 2008-08-16 07:04:37 | 2 | 1
3 | 2008-08-22 11:45:26 | 2 | 2
3 | 2008-09-12 09:11:25 | 1 | 2
3 | 2008-10-01 06:22:37 | 1 | 1
3 | 2008-10-20 01:55:51 | 2 | 1
3 | 2008-10-28 01:30:40 | 1 | 2
(12 rows)