Menu
CoddyTech

Conservar una fila por clave

Parte de la sección Más allá de lo básico del Journey de SQL de Coddy. Lección 26 de 27.

A menudo tendrás una tabla en la que una clave (un cliente, un sensor, un producto) aparece varias veces y solo querrás conservar la más reciente, o la que tenga la puntuación más alta.

Usa ROW_NUMBER() de la misma manera que lo hiciste para top-N, después conserva 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 clasificación por esta clave»; ORDER BY indica «primero los más recientes». La fila 1 de cada partición es la fila que quieres conservar.

challenge icon

Desafío

Intermedio

Tablas y columnas disponibles:

  • readings: sensor_id, recorded_at, value

Para cada sensor que tenga al menos 3 lecturas, devuelve su única lectura de mayor valor. Si dos lecturas empatan en value, conserva la más reciente.

Devuelve sensor_id, recorded_at, value, ordenados por sensor_id.

Pruébalo tú mismo

WITH ranked AS (
    -- TODO: selecciona cada lectura con su posición dentro de su sensor (rn)
    -- y el número de lecturas que tiene ese sensor (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Más allá de lo básico

Practica por tu cuenta: Playground de SQL