Funzione ROW_NUMBER
Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 57 di 72.
Le funzioni finestra eseguono calcoli su un insieme di righe della tabella correlate alla riga corrente. A differenza delle normali funzioni di aggregazione, le funzioni finestra non condensano i risultati in un'unica riga.
Sono particolarmente utili quando devi:
- Calcolare i totali progressivi
- Classificare gli elementi all'interno dei gruppi
- Confrontare le righe correnti con quelle precedenti o successive
- Analizzare le tendenze nel corso dei periodi di tempo
Ad esempio, ecco alcuni casi d’uso reali delle funzioni finestra:
- Analisi delle vendite
- Calcola le vendite cumulative fino a ciascun anno (1995, 1997, 1999)
- Trova i prodotti più venduti per ogni trimestre
- Statistiche sportive
- Tieni traccia del numero di medaglie olimpiche nei diversi anni
- Individua gli atleti di punta in ciascun periodo di gara (2000, 2004, 2008)
ROW_NUMBER() è una delle funzioni finestra più semplici. Assegna un numero sequenziale univoco a ogni riga nel set di risultati. Ecco come usarla:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;È obbligatorio usare la clausola OVER con ROW_NUMBER() : ROW_NUMBER() OVER ()
Ad esempio:
SELECT product_name, sale_date,
ROW_NUMBER() OVER () as row_num
FROM sales;Questo aggiunge una colonna row_num che conta da 1 al numero totale di righe.
Nota: la clausola OVER può contenere istruzioni di ordinamento e partizionamento per controllare il funzionamento della numerazione.
Sfida
FacileTabelle e colonne disponibili:
liquids:id,density
Recupera tutti i liquidi con una densità superiore a 5.677.
Numera il risultato (usa la funzione ROW_NUMBER()) e chiama questa colonna row_num
Provalo tu
-- Numera ogni riga del risultato filtrato usando una funzione finestra
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Altre parole chiave
La parola chiave INLa parola chiave BETWEENLa parola chiave LIKELa parola chiave ASRiepilogo - Modelli di telefoni cellulari2Condizioni
Basi delle condizioniLa parola chiave ANDLa parola chiave ORLa parola chiave NOTCombinare più condizioniParentesiValori booleani5Operazioni aritmetiche
Operatori matematiciColonne matematicheL’operazione moduloLa funzione ROUND()8Statistica
Funzioni aggregate integrate - Parte 1Funzioni aggregate integrate - Parte 2Raggruppamento - Parte 1Raggruppamento - Parte 2Sottoquery - Parte 1Sottoquery - Parte 2Riepilogo - Negozio Total GainRiepilogo - Negozio di scooterRiepilogo - Caffetteria11Funzioni finestra, parte 1
Funzione ROW_NUMBERCriterio ORDER BYCriterio PARTITION BYPARTITION e ORDERFunzioni LEAD e LAGRipasso - LEAD e LAGRipasso - ImmaginiRipasso - Scatole3Formato di restituzione specifico
Valori nullOrdinare i risultati Parte 1Ordinare i risultati Parte 2Riepilogo - Azienda di sicurezza informaticaLimitare il numero di recordRiepilogo - Fabbrica di veicoli6Sfide introduttive
Ripasso - Elezione parlamentareRipasso - Arresto di un criminale da parte della poliziaRipasso - Contenitore per bevande da barRipasso - Progetta nuove colonne9Tabelle multiple
JOIN di base, parte 1JOIN di base, parte 2Riepilogo - JOINSelf joinRiepilogo - Self joinUNIONSemplificare le query, parola chiave WITHRiepilogo - Query con WITHRiepilogo - Impresa edile immobiliare12Funzioni finestra, parte 2
Funzioni RANK e DENSE_RANKRipasso: RANK e DENSE_RANKFunzione NTILEFunzioni di aggregazioneCriteri ROWS e RANGEEsercitati da solo: Playground SQL