RANK ve DENSE_RANK
- SQL kursu
- İleri seviye
- Ders 15/81
- 4 dk
Sıralama fonksiyonlarını öğrenirsin.
RANK ve DENSE_RANK
RANK eşitlikte atlar, DENSE_RANK atlamaz. İkisi de sıralama verir.
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rk,
DENSE_RANK() OVER (ORDER BY price DESC) AS dr
FROM products;Bu sorgu iki tür sıralama verir.
products kaynağından name, price, RANK() OVER (ORDER BY price DESC) AS rk, … seçilir. RANK() bir pencere fonksiyonudur: satırları daraltmadan, OVER (…) içinde tanımlanan pencereye göre her satır için ayrı değer hesaplar.
RANK ve DENSE_RANK — ayrıntı
Eşit iki satır 1. ise RANK 3'e atlar, DENSE_RANK 2'ye geçer.
Yarışma sonuçlarında "iki kişi birinci, sonraki üçüncü" demek istiyorsan RANK, "sonraki ikinci" demek istiyorsan DENSE_RANK kullanırsın.
Uygulama RANK ve DENSE_RANK
Her ürünün RANK() ve DENSE_RANK() sıralamasını hesapla.
Başlangıç kodu
-- iki tür sıralama
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rkÖrnek çözüm
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rk,
DENSE_RANK() OVER (ORDER BY price DESC) AS dr
FROM products;Beklenen çıktı
name rk dr Laptop 1 1 Telefon 2 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 RANK ve DENSE_RANK: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
RANK |
atlar |
DENSE_RANK |
atlamaz |
eşitlik |
aynı değer |
sıralama |
derece |
2 DENSE_RANK ekle
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rk,
____() OVER (ORDER BY price DESC) AS dr
FROM products;
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rk,
DENSE_RANK() OVER (ORDER BY price DESC) AS dr
FROM products;
Açıklama: DENSE_RANK doğru cevap.
3 DENSE_RANK eşitlikte ne yapar?
- Atlar
- Hata
- Atlamaz Doğru cevap
- Sıfırlar
Açıklama: DENSE_RANK eşitlikte atlamaz.