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])La funzione accetta i seguenti parametri:
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)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)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)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)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.