SQL'de RANK ve DENSE_RANK Fonksiyonları Arasındaki Temel Farklar

0 Yanıt 3 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
SQL'de veri sıralama işlemlerinde sıkça kullanılan RANK ve DENSE_RANK fonksiyonları, özellikle raporlama ve analiz süreçlerinde önemli yer tutar. Her ikisi de belirli bir sıralama düzeni içinde veriyi derecelendirirken, aralarındaki temel fark, "boşluklar" ve sıralama sonrası derece aralığıdır.

Öncelikle, RANK fonksiyonu, bir sıralama sırasında aynı değere sahip satırların aynı derecesini almasını sağlar ve sonrasında atlanan derecelere yol açar. Örneğin, iki satır aynı değerse, her ikisi de 1. sırayı alır, ancak sonraki satır 3. sıraya ilerler (2. atlanır). Bu, özellikle sıralamada "boşluk" oluşmasına neden olur. Kullanım örneği:

KOD
1234567
SELECT
  isim,
  puan,
  RANK() OVER (ORDER BY puan DESC) AS derece
FROM
  ogrenciler;


DENSE_RANK ise, aynı değere sahip satırların aynı derecesini almasını sağlar, ancak atlanmadan devam eder. Yani, iki satır aynı değerse, her ikisi de 1. olur ve bir sonraki satır 2. sıraya geçer. Bu, sıralama sonrası derecelendirmede boşluk bırakmaz. Kullanım örneği:

KOD
1234567
SELECT
  isim,
  puan,
  DENSE_RANK() OVER (ORDER BY puan DESC) AS derece
FROM
  ogrenciler;


Kısaca özetlemek gerekirse, RANK fonksiyonu sıralamada boşluklar oluştururken, DENSE_RANK boşluk bırakmadan ardışık dereceler verir. Bu fark, özellikle sonuçların sunumu ve derecelendirme mantığı açısından kritik hale gelir. Örneğin, yarışma skorlarında RANK kullanmak, ilk üçteki sıralamayı gösterirken, DENSE_RANK kullanmak, tüm eşit skorları aynı tutup, ardından gelen skoru doğru şekilde takip etmeyi sağlar.

Sonuç olarak, hangi fonksiyonun kullanılacağı, raporlama ihtiyaçlarına ve derecelendirme mantığına göre belirlenir. RANK, sıralamada boşluklar bırakmak isteyen durumlar için uygundur, DENSE_RANK ise ardışık ve boşluksuz sıralama gerektiren durumlarda tercih edilir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi