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 = 1PARTITION 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.
Görev
OrtaKullanı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
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
2String Fonksiyonları
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE ve TRIM|| ile BirleştirmeÖzet - Faturalar6Analitik Tarifleri
Grup Başına İlk NToplamın YüzdesiKümülatif ToplamAnahtar Başına Tek Satır TutmaÖzet - En İyi MüşterilerKendi başına pratik yap: SQL playground