SQL DENSE_RANK() İşlevi

Sql Dense Rank Islevi



Pencere işlevleri SQL'de çok önemli bir özelliktir ve SQL veritabanlarındaki karmaşık veri hesaplamaları ve işlemlerinde temel bir rol oynar. SQL pencere fonksiyonlarındaki fonksiyonlardan biri dedense_rank() fonksiyonudur.

DENSE_RANK() işlevi, bir sonuç kümesi içindeki her satıra, belirtilen bir sütundaki değerlere dayalı olarak benzersiz bir sıralama atamamızı sağlar. Rank() işlevine çok benzer, ancak işlevin yinelenen kayıtları işleme biçimi arasında küçük farklılıklar vardır.

Bu derste bu fonksiyonun nasıl çalıştığını, sağlanan sözdizimini ve onu bir veritabanında nasıl kullanabileceğimizi keşfedeceğiz.







Nasıl çalışır

Bu fonksiyonun nasıl çalıştığını açıklayarak başlayalım. Fonksiyonun üst düzey olduğunu ve altta yatan uygulamayı açıklayamayacağımızı akılda tutmakta fayda var.



Fonksiyon, sonuç kümesindeki her satıra, sıralama 1'den başlayarak sütunlardaki her benzersiz değer için 1'er artarak bir sıralama atayarak çalışır.



Belirtilen sütunlarda benzer değere sahip satırlar (kopyalar) aynı sıralamayla, farklı değere sahip bir sonraki satır ise boşluk bırakılmadan bir sonraki kullanılabilir sıralamayla atanır.





Bahsettiğimiz gibi fonksiyon, Rank() fonksiyonundan farklı olarak yinelenen değerlerin olduğu yerlerde boşluk bırakmıyor.

Dense_rank() fonksiyonunun yaygın bir kullanımı sıralama işlemlerini gerçekleştirmektir. Örneğin, en üstteki N kaydı vb. bulmak için bunu kullanabiliriz.



İşlev Sözdizimi:

Aşağıda, yoğun_rank() işlevinin sözdizimi açıklanmaktadır:

DENSE_RANK() OVER (

[Bölüm_ifadesine göre BÖLÜM, ... ]

EMİR sıralama_ifadesine göre [ASC | DESC], ...

)

Verilen sözdiziminde:

  1. Dens_rank() fonksiyonunun kendisiyle başlıyoruz.
  2. OVER cümlesi, pencere işlevi özelliklerinin başlangıcını işaret eder. Bu, sonuç kümesinde sıralamanın nasıl uygulanacağını tanımlar.
  3. PARTITION BY partition_expression, elde edilen kümeyi bir veya daha fazla sütuna dayalı olarak gruplara veya bölümlere ayırmamıza olanak tanıyan isteğe bağlı bir cümledir. Sıralama her bölüme ayrı ayrı uygulanır ve sıralama yeni bir bölümde sıfırlanır.
  4. ORDER BY sıralama_ifadesi, elde edilen bölümlerdeki verileri sıralamak için kullanmak istediğimiz sırayı belirtir.

Örnek veri

Dens_rank() fonksiyonunun nasıl kullanılacağını göstermek için örnek verileri içeren bir tabloyla başlayalım. Bizim durumumuzda aşağıdaki gibi örnek bir “siparişler” tablosu kullanıyoruz:

Örnek 1: Dense_Rank() Fonksiyonunun Kullanımı

Ortaya çıkan siparişleri fiyata göre sıralamak için yoğun_rank() fonksiyonunu kullanabiliriz. Aşağıdaki örnek sorguyu göz önünde bulundurun:

SEÇME

Sipariş Kimliği,

müşteri_kullanıcı adı,

ürün_satın alındı,

DENSE_RANK() OVER (

EMİR İLE

fiyat DİSK

) fiyat_sıralaması

İTİBAREN

siparişler veya;

Verilen örnekte, verileri emirlerin fiyatına göre sıralamak için yoğun_rank() fonksiyonunu kullanıyoruz. Verileri gruplamadığımız için PARTITION BY deyimini atlıyoruz.

Sonuçta ortaya çıkan çıktı aşağıdaki gibidir:

Örnek 2: BÖLÜM ŞEKLİ

Verileri örneğin satın alınan ürüne göre çeşitli segmentlere gruplamak için PARTITION BY deyimini de ekleyebiliriz.

Örnek bir sorgu aşağıdaki gibidir:

SEÇME

Sipariş Kimliği,

müşteri_kullanıcı adı,

ürün_satın alındı,

DENSE_RANK() OVER (

Product_purchased'e göre bölümleme

EMİR İLE

fiyat DİSK

) fiyat_sıralaması

İTİBAREN

siparişler veya;

Bu, elde edilen gruplara göre verileri çeşitli gruplara ayırmalı ve sıralamayı her gruptaki öğelere uygulamalıdır.

Çözüm

Bu yazıda, belirli sütunlara dayalı olarak değerlere bir sıralama atamak için SQL'de yoğun_rank() pencere işlevini kullanmanın ve onunla çalışmanın temellerini öğrendik.