Funzione di ritardo Oracle

Funzione di ritardo Oracle

In Oracle, una funzione analitica si riferisce alle funzioni utilizzate per calcolare un insieme di righe. Le funzioni analitiche sono utilizzate principalmente per determinare le varie metriche come percentili, deviazioni standard, ecc.

In questo tutorial, impareremo come utilizzare una delle funzioni di ritardo Oracle per accedere a una riga in un offset specifico dalla riga corrente.

Funzione oracle lag ()

La funzione Lag () viene utilizzata per recuperare il valore di una riga in una tabella dalla riga corrente. Ad esempio, puoi usarlo per ottenere il valore da cinque righe dalla posizione corrente. È possibile utilizzarlo per eseguire i calcoli o i confronti tra i valori nel tempo.

Di seguito mostra la sintassi di base della funzione:

Lag (expr [, offset] [, default])
SOPRA (
[query_partition_clause]
order_by_clause
)

La funzione accetta i seguenti parametri:

  1. Expr - Questo definisce l'espressione che viene valutata rispetto al valore della riga specificato sul parametro di offset.
  2. Compensare - Imposta il numero di righe che si desidera andare all'indietro dalla riga corrente. Per impostazione predefinita, la funzione prende la riga dietro quella attuale.
  3. Predefinito - Consente alla funzione di restituire un valore predefinito quando va oltre l'ambito dell'offset specificato anziché un valore nullo.
  4. Query_partition_clause - Specifica la partizione per clausola per organizzare le righe in vari gruppi.
  5. Order_by_clause - Imposta l'ordine per le righe.

Esempio di funzione Oracle Lag ()

Questo esempio dimostra come utilizzare la funzione Lag ().

Seleziona First_name, last_name, stipendio, job_id, lag (stipendio) oltre (ordine per salario ASC)
dai dipendenti EMP;

Risultato:

Come puoi vedere, la colonna di ritardo contiene lo stipendio della riga dietro di essa. Se non c'è una riga dietro di essa come la prima colonna, la funzione restituisce null.

Possiamo evitarlo impostando il parametro predefinito.

selezionare First_name, last_name, stipendio, ritardo (stipendio, 1, 0) sopra (ordine per salario ASC) come prev)
dai dipendenti EMP;

Produzione:

Possiamo anche specificare il valore di offset come mostrato nel seguente:

selezionare First_name, last_name, stipendio, ritardo (stipendio, 5, 0) su (ordine per salario ASC) come prev)
dai dipendenti EMP;

In questo caso, la query dovrebbe recuperare cinque colonne dietro di essa come segue:

Per utilizzare la funzione LAG con una clausola partizione per clausola, possiamo eseguire il seguente comando:

selezionare First_name, last_name, job_id stipendio, ritardo (stipendio, 1, 0) su (partizione per ordine_id per salario ASC) come prev)
dai dipendenti EMP;

Risultato:

Conclusione

In questo post, abbiamo discusso di come utilizzare la funzione Oracle Lag () per recuperare le righe precedenti dalla posizione corrente in un determinato offset.