Menu
CoddyTech

Eine Zeile pro Schlüssel behalten

Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 26 von 27.

Oft hast du eine Tabelle, in der ein Schlüssel (ein Kunde, ein Sensor, ein Produkt) mehrmals vorkommt und du nur den neuesten oder den mit der höchsten Punktzahl behalten möchtest.

Verwende ROW_NUMBER() genauso wie bei Top-N und behalte dann 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 bedeutet „eine Rangfolge pro diesem Schlüssel“; ORDER BY bedeutet „neueste zuerst“. Zeile 1 in jeder Partition ist die Zeile, die du behalten möchtest.

challenge icon

Aufgabe

Mittel

Verfügbare Tabellen und Spalten:

  • readings: sensor_id, recorded_at, value

Gib für jeden Sensor mit mindestens 3 Messwerten seinen einzelnen Messwert mit dem höchsten Wert zurück. Haben zwei Messwerte denselben value, behalte den aktuelleren.

Gib sensor_id, recorded_at, value aus, sortiert nach sensor_id.

Probier es selbst

WITH ranked AS (
    -- TODO: Wähle jeden Messwert mit seinem Rang innerhalb seines Sensors (rn) aus
    -- und die Anzahl der Messwerte dieses Sensors (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Über die Grundlagen hinaus

Übe selbstständig: SQL-Playground