Menu
CoddyTech

Jeden wiersz na klucz

Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 26 z 27.

Często będziesz mieć tabelę, w której klucz (klient, czujnik, produkt) pojawia się wiele razy, a chcesz zachować tylko najnowszy wpis lub ten z najwyższym wynikiem.

Użyj ROW_NUMBER() tak samo jak w przypadku top-N, a następnie zachowaj 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 oznacza „jeden ranking dla tego klucza”; ORDER BY oznacza „od najnowszego”. Wiersz 1 w każdej partycji to wiersz, który chcesz zachować.

challenge icon

Wyzwanie

Średni

Dostępne tabele i kolumny:

  • readings: sensor_id, recorded_at, value

Dla każdego czujnika, który ma co najmniej 3 odczyty, zwróć jego pojedynczy odczyt o najwyższej wartości. Jeśli dwa odczyty mają tę samą wartość w kolumnie value, wybierz nowszy.

Zwróć sensor_id, recorded_at, value, uporządkowane według sensor_id.

Spróbuj swoich sił

WITH ranked AS (
    -- TODO: wybierz każdy odczyt wraz z jego pozycją w rankingu w obrębie danego czujnika (rn)
    -- oraz liczbą odczytów tego czujnika (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Poza podstawami

Poćwicz samodzielnie: Edytor online SQL