RANK ve DENSE_RANK fonksiyonları tablolarda bulunan kayıtları sıralayarak bu kayıtların sıralamada nerede olduklarını görmemizi sağlar. RANK ve DENSE_RANK Fonksiyonları ROW_NUMBER fonksiyonuna çok benzemektedir. Farkı ROW_NUMBER ile o kaydın kaçıncı kayıt olduğunu bulurken RANK fonksiyonu ile derecesini bulabilmemizdir. Yani RANK fonksiyonu kaçıncı kayıt olduğunu değil sıralamada kaçıncı olduğunu verir. DENSE_RANK ile RANK fonksiyonları arasındaki fark ise RANK fonksiyonunda aynı dereceye sahip kayıt olduğunda sıralamada sonra gelen kayıtlar için sıra sayısı atlanırken DENSE_RANK fonksiyonunda sıralama kaldığı yerden devam eder.
Örnek:
SELECT CustomerID, COUNT(*) AS "Satış Sayısı",
RANK() OVER(ORDER BY COUNT(*) DESC) AS "Rank ile Sıralama",
ROW_NUMBER() OVER(ORDER BY COUNT(*) DESC) AS "Normal Sıralama",
DENSE_RANK() OVER(ORDER BY COUNT(*) DESC) AS "Dense_Rank ile Sıralama"
FROM Sales.SalesOrderHeader
GROUP BY CustomerID
ORDER BY COUNT(*) DESC;
Not! Görsel http://www.ismailgursoy.com.tr sitesinden alıntıdır.
No comments:
Post a Comment