Grup Başına İlk N
Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası. Ders 23 / 27.
"Departman başına en yüksek maaşlı çalışan" ders kitabındaki klasik örnektir. Tarif her zaman ROW_NUMBER() ile bir PARTITION BY kullanmak ve ardından 1. satıra filtre uygulamaktır.
WITH ranked AS (
SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
FROM employees
)
SELECT name, department, salary FROM ranked WHERE rn = 1En üstteki 1 yerine en üstteki 3 değeri mi istiyorsun? WHERE rn = 1 ifadesini WHERE rn <= 3 olarak değiştir. En üst sırada eşitliklere izin vermek mi istiyorsun? ROW_NUMBER() yerine RANK() kullan.
Görev
KolayMevcut tablolar ve sütunlar:
employees:id,name,department,salary
Her department içinde en yüksek maaşlı çalışanı döndürün. name, department ve salary değerlerini department sırasına göre sıralanmış şekilde çıktı olarak verin. Bir department içinde en üst sırada iki çalışan eşitlenirse yalnızca birini döndürün: id değeri daha düşük olanı.
Kendin dene
WITH ranked AS (
-- ROW_NUMBER() OVER (PARTITION BY department ORDER BY ...)
)
SELECT name, department, salary FROM ranked WHERE rn = 1
ORDER BY department
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