Menu
CoddyTech

Garder une ligne par clé

Fait partie de la section Au-delà des bases du Journey SQL de Coddy. Leçon 26 sur 27.

Vous aurez souvent une table où une clé (un client, un capteur, un produit) apparaît plusieurs fois et où vous souhaitez ne conserver que la plus récente, ou celle qui a le score le plus élevé.

Utilisez ROW_NUMBER() comme vous l’avez fait pour le top-N, puis gardez 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 indique « un classement par cette clé » ; ORDER BY indique « du plus récent au plus ancien ». La ligne 1 de chaque partition est celle que vous voulez conserver.

challenge icon

Défi

Moyen

Tables et colonnes disponibles :

  • readings : sensor_id, recorded_at, value

Pour chaque capteur ayant au moins 3 relevés, renvoie son unique relevé ayant la valeur la plus élevée. Si deux relevés ont la même value, conserve le plus récent.

Affiche sensor_id, recorded_at, value, triés par sensor_id.

Essayez vous-même

WITH ranked AS (
    -- TODO: sélectionner chaque relevé avec son rang au sein de son capteur (rn)
    -- et le nombre de relevés de ce capteur (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Au-delà des bases

Entraînez-vous par vous-même : Playground SQL