SQL Server Sıralama Fonksiyonları

T-SQL içerisinde bulunan ama çok fazla kullanılmayan birkaç sıralama fonksiyonundan bahsedeceğim. Her ne kadar sıralamada Order by ifadesini çok sık kullanıyor olsakda SQL Server’da çalıştırılan sorgu sonuç kümesinde özel sıralama işlemleri için farklı çözümlerde mevcut.. Şimdi en anlaşılabilir ve yalın halde tanımlama yapalım;

ROW_NUMBER()

Row_Number() fonksiyonu işlem gerçekleştirilen satır ile alakalı sayısal bir değer döndürür. Row_Number ile satır numarası 1’den başlar ve 1 artarak devam eder. Tüm satırları sırayla numaralandırır. 1, 2, 3, 4, 5 gibi..

RANK()

Rank’da bir satırın sırası, kontrol edilen değere göre bir önceki satır ile aynıysa aynı değeri döndürür. Varsayalım ki kontrol değerimiz 2. ve 3. satırda aynı. Row_Number’a göre sıralama gerçekleştirse 1,2,3,4,5 olarak devam edecekti. Ama Rank’da bu işlem 1,2,2,4,5 olarak devam edecektir. Aradaki 3. sıra değerini atlayarak saymaya devam edecektir.

DENSE_RANK()

Dense Rank’ı Rank’dan farklı olarak arada yer alan 3. sıra değerini atlamadan saymaya devam edecektir şeklinde tanımlarsak yanlış olmaz. Rank()’da gerçekleşen işlem 1,2,2,4,5 ise Dense_Rank()’da 1,2,2,3,4 olarak devam edecektir.

NTILE()

Sıralı bir bölümdeki satırları belirtilen sayıda gruba böler. Gruplar birden başlayarak numaralandırılır. NTILE, her satır için satırın ait olduğu grubun numarasını döndürür. Varsayılım ki NTILE’da sonuç kümesini 3 gruba bölmek istediniz. Sonuç kümesinde 120 satır geldi. İlk 40 değeri 1.gruba, ikinci 40 değeri 2.gruba, üçüncü 40 değeri 3. gruba alır.

Tanımlamalar sonrası bir örnek ile kolayca kavrayalım;

Resim 1

Sıralama fonksiyonlarındaki ortak nokta Over Partition ile birlikte Order by kullanmalısınız. Yeni yazıda görüşmek üzere.

Kaynaklar:

https://docs.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/t-sql/functions/ntile-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/t-sql/functions/dense-rank-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.