CodeBlanks Logo Icon CodeBlanks

RANK ve DENSE_RANK

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

query.sql
-- iki tür sıralama
SELECT name, price,
  RANK() OVER (ORDER BY price DESC) AS rk

Örnek çözüm

query.sql
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

Soru
SELECT name, price,
  RANK() OVER (ORDER BY price DESC) AS rk,
  ____() OVER (ORDER BY price DESC) AS dr
FROM products;
Cevap
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.

İleri seviye bölümündeki tüm dersler