Menu
CoddyTech

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.

Sık sık bir anahtarın (müşteri, sensör, ürün) bir tabloda birden fazla kez göründüğü ve yalnızca en sonuncusunu ya da en yüksek puana sahip olanı tutmak istediğin tablolarla karşılaşırsın.

Top-N için yaptığın gibi ROW_NUMBER() kullan, ardından rn = 1 koşulunu 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 için bir sıralama olduğunu belirtir; ORDER BY ise “en yeniden başlayarak” anlamına gelir. 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 en yüksek değerli okumasını döndür. İki okumanın value değeri eşitse, daha yeni olanı tut.

sensor_id, recorded_at, value değerlerini sensor_id'ye göre sıralı olarak çıktıla.

Kendin dene

WITH ranked AS (
    -- TODO: her okumayı kendi sensörü içindeki sırasıyla (rn) seç
    -- ve o sensörün sahip olduğu okuma sayısını (total_readings)
)
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