Mantenere una riga per chiave
Fa parte della sezione Oltre le basi del percorso SQL di Coddy. Lezione 26 di 27.
Spesso avrai una tabella in cui una chiave (un cliente, un sensore, un prodotto) compare più volte e vuoi conservare solo quella più recente, oppure quella con il punteggio più alto.
Usa ROW_NUMBER() come hai fatto per top-N, poi mantieni rn = 1.
WITH ranked AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY customer_id ORDER BY purchased_at DESC
) AS rn
FROM purchases
)
SELECT * FROM ranked WHERE rn = 1PARTITION BY significa «una classifica per questa chiave»; ORDER BY significa «prima i più recenti». La riga 1 in ogni partizione è la riga che vuoi mantenere.
Sfida
MedioTabelle e colonne disponibili:
readings:sensor_id,recorded_at,value
Per ogni sensore che ha almeno 3 letture, restituisci la sua singola lettura con il valore più alto. Se due letture hanno lo stesso value, tieni quella più recente.
Restituisci sensor_id, recorded_at, value, ordinati per sensor_id.
Provalo tu
WITH ranked AS (
-- TODO: seleziona ogni lettura con il suo rango all'interno del relativo sensore (rn)
-- e il numero di letture di quel sensore (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Oltre le basi
2Funzioni sulle stringhe
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE e TRIMConcatenare con ||Ripasso - Fatture3Aggregazione condizionale
COUNT con CASESUM con CASETrasformare le righe in colonneRiepilogo - Fonti di traffico6Ricette di analisi dei dati
Top-N per gruppoPercentuale del totaleTotale progressivoMantenere una riga per chiaveRiepilogo - Clienti principaliEsercitati da solo: Playground SQL