Menu
Coddy logo textTech

Anahtar Başına Tek Satır Tutma

Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası. Ders 26 / 27.

Bir anahtarın (bir müşteri, bir sensör, bir ürün) bir tabloda birden çok kez göründüğü ve yalnızca en sonuncusunu veya en yüksek puana sahip olanı tutmak istediğiniz tablolarla sık sık karşılaşırsınız.

Top-N için yaptığın gibi ROW_NUMBER() kullan, ardından rn = 1 değerini koru.

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 “bu” anahtar başına bir sıralama demektir; ORDER BY ise “en yeni önce” demektir. Her bölümdeki 1. satır, saklamak istediğiniz satırdır.

challenge icon

Görev

Orta

Kullanılabilir tablolar ve sütunlar:

  • readings: sensor_id, recorded_at, value

En az 3 okuması olan her sensör için, tek bir en yüksek değerli okumasını döndürün. İki okumanın value değeri eşitse, daha yeni olanı koruyun.

sensor_id, recorded_at, value değerlerini sensor_id'ye göre sıralanmış şekilde çıktı olarak verin.

Kendin dene

WITH ranked AS (
    -- ROW_NUMBER() OVER (PARTITION BY sensor_id ORDER BY value DESC, recorded_at DESC)
    -- COUNT(*) OVER (PARTITION BY sensor_id) >= 3 okumaya sahip sensörleri filtrelemek için
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temellerin Ötesi bölümündeki tüm dersler

Kendi başına pratik yap: SQL playground