Funzione LAG SQL

Funzione LAG SQL

La funzione LAG in SQL consente di recuperare la riga precedente in un offset specifico dalla riga corrente. Ciò significa che puoi accedere alla riga precedente dalla riga corrente. È inoltre possibile specificare un particolare offset per accedere al secondo, terzo e così nella riga precedente.

Discutiamo di come possiamo usare la funzione LAG in SQL.

Sintassi della funzione

La sintassi della funzione è come mostrata:

Lag (Scalar_Expression [, offset] [, default])
Over ([partition_by] order_by);

I parametri della funzione sono espressi come mostrato di seguito:

  1. Scalar_espressione - si riferisce al valore di ritorno in base a un offset specificato dalla riga corrente.
  2. Compensare - definisce il numero di elementi precedenti dalla riga corrente da cui accedere ai valori. Per impostazione predefinita, SQL utilizzerà un valore di offset di 1.
  3. Predefinito - Imposta il valore predefinito se il valore di offset è oltre l'ambito della partizione. Il valore predefinito è nullo.
  4. Partizione di - Partizioni i dati in una o più partizioni a seconda della condizione specificata.
  5. Ordinato da - espressione per ordinare i dati in ogni partizione.

Esempio 1

Supponiamo di avere una tabella contenente i dati dei dipendenti come mostrato:

Per ottenere i nomi dei dipendenti attuali e precedenti, possiamo eseguire la query come mostrato:

Seleziona full_name, lag (full_name)
Over (partizione per categoria ordine per id) come prev_emp
Dai dipendenti;

Il codice sopra dovrebbe restituire i nomi dei dipendenti attuali e precedenti in ogni partizione.

L'output è come mostrato:

Esempio 2

Se non vi è alcuna riga precedente nella partizione, la funzione restituirà null. Se vogliamo impostare un valore per le righe inesistenti, possiamo impostare il parametro predefinito come mostrato:

Seleziona full_name, lag (full_name, 1, "persona scomparsa")
Over (partizione per categoria ordine per id) come prev_emp
Dai dipendenti;

Questo dovrebbe sostituire i valori null con "persona scomparsa.'L'output verrà mostrato di seguito:

Esempio 3

Supponiamo di voler accedere a due righe dalla riga corrente? Possiamo farlo specificando l'offset come mostrato:

Seleziona full_name, lag (full_name, 2, 'n/a')
Over (partizione per categoria ordine per id) come prev_emp
Dai dipendenti;

La query sopra dovrebbe tornare a due righe e selezionare il suo valore.

Produzione:

Conclusione

In questo articolo, hai imparato come utilizzare la funzione SQL lag () per accedere alla riga precedente dalla riga corrente.

Grazie per aver letto!!