Menu
Coddy logo textTech

Mantenere una riga per chiave

Fa parte della sezione Oltre le basi del percorso SQL di Coddy. Lezione 26 di 27.

Ti capiterà spesso di avere una tabella in cui una chiave (un cliente, un sensore, un prodotto) compare più volte e vuoi mantenere 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 = 1

PARTITION BY indica «una classifica per questa chiave»; ORDER BY indica «prima i più recenti». La riga 1 in ogni partizione è quella che vuoi mantenere.

challenge icon

Sfida

Medio

Tabelle e colonne disponibili:

  • readings: sensor_id, recorded_at, value

Per ogni sensore che ha almeno 3 rilevazioni, restituisci la sua singola rilevazione con il valore più alto. Se due rilevazioni hanno lo stesso value, mantieni quella più recente.

Mostra sensor_id, recorded_at, value, ordinati per sensor_id.

Provalo tu

WITH ranked AS (
    -- ROW_NUMBER() OVER (PARTITION BY sensor_id ORDER BY value DESC, recorded_at DESC)
    -- COUNT(*) OVER (PARTITION BY sensor_id) per filtrare i sensori con >= 3 letture
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Oltre le basi

Esercitati da solo: Playground SQL