In questo tutorial, ci concentreremo sull'uso di una delle funzioni MySQL: Lag (). È una funzione finestra che consente di accedere e recuperare il valore delle righe precedenti dalla riga corrente all'interno dello stesso set di risultati.
Sintassi di base
La sintassi generale per l'utilizzo della funzione mysql lag () è:
Lag (espressione, offsetValue, defaultVar) su (Prendiamo un momento per spiegare alcuni dei parametri nella sintassi della funzione Lag ().
Sono i seguenti:
Espressione: Questo è il valore restituito dalla funzione dalla riga che conduce la riga corrente per il valore di offset specificato.
OffsetValue: Questo valore rappresenta il numero di righe che precedono la riga corrente da cui ottenere il valore. Questo valore deve essere uno 0 o un valore superiore a 0.
NOTA: Il valore di 0 rappresenta la riga corrente.
DefaultVar: Questo valore viene restituito come valore predefinito per funzione se non esiste una riga precedente. Se il valore predefinito non è definito nel parametro della funzione e non esiste alcuna riga precedente, la funzione restituisce un valore nullo.
Partizione di: La clausola di partizione per clausole divide le righe in un set di partizione logica. La funzione di ritardo viene quindi applicata alle partizioni divise.
ORDINATO DA: Come al solito, questo valore specifica l'ordine delle righe nelle partizioni disponibili.
Esempio di casi d'uso
Diamo un'occhiata ai casi d'uso di esempio della funzione Lag () per capire come funziona. Inizia creando un database di esempio chiamato Sample_DB;
Drop database se esiste sample_database;Ora che abbiamo un database di esempio con cui lavorare, possiamo procedere e illustrare come lavorare con la funzione Lag MySQL.
Esempio 1: funzione LAG senza valore predefinito
Considera l'esempio seguente che applica la funzione LAG su iscrizione_date con un valore di offset di 1.
Una volta eseguite la query sopra, otteniamo una nuova colonna precedente_date che contiene il valore precedente della riga come specificato con un valore di offset di 1. Poiché non esiste un valore precedente nella prima riga, il valore è nullo.
Nota: è possibile specificare il valore predefinito se una riga non ha un valore precedente.
L'output è come mostrato di seguito:
Esempio 2: funzione LAG con valore predefinito
È inoltre possibile specificare un valore predefinito per una riga in cui il valore precedente non esiste. Nel nostro esempio, imposteremo il valore predefinito nella data corrente.
Nota: in questo esempio, imposteremo anche il valore di offset come 2 anziché 1.
Considera la query di seguito:
Seleziona *, lag (iscrizione_date, 2, curdate ()) su (ordine per id asc) come precedente_date da sample_database.utenti;Una volta eseguita la query sopra, otterremo valori con un valore di offset di due e la data corrente come impostazione predefinita per i valori null.
L'output è come mostrato di seguito:
Esempio 3: funzione Lag con partizione di
Possiamo usare la funzione Lag () con la clausola partizione per. Questa clausola prima raggruppa i dati in vari sottoinsiemi logici e quindi applica la funzione di ritardo alle partizioni.
Prima di procedere, vediamo i dati nella tabella dell'utente. Considera la seguente domanda:
Inserisci in utenti (id, nome, punteggio, iscrizione_date)Ora che abbiamo una tabella con 10 valori, possiamo partizionare i dati per punteggio e quindi applicare la funzione di ritardo.
L'operazione sopra è illustrata nella query seguente:
Seleziona *, lag (iscrizione_date, 1, Curdate ()) su (partizione per ordine di punteggio per ID ASC) come precedente_date da sample_database.utenti;Nella query sopra, iniziamo partizionando i dati in base al punteggio e quindi applicando la funzione LAG con un valore di offset di 1. Abbiamo anche impostato il valore predefinito come data corrente. Il risultato di output è come mostrato di seguito:
Nota: è possibile anche notare che la prima riga di ogni partizione contiene la data corrente, il che significa che non esiste un valore precedente nella riga impostata.
Conclusione
Questo tutorial ha discusso di come funziona la funzione Lag () per ottenere valori delle righe precedenti nella riga corrente.
Per ricapitolare:
Grazie per aver letto.