ROW_NUMBER(), RANK() ve DENSE_RANK() karşılaştırması
Sıralama pencere fonksiyonları arasında ROW_NUMBER() en yaygın olanıdır; onu RANK() ve DENSE_RANK() izler. Bu sıralama fonksiyonlarının her biri (ve NTILE() da) SQL Server'da kayıtları sıralamak için farklı bir yol sunar.
Bu egzersizde, veri kümemizde 3 numaralı olay tipini ne sıklıkla gördüğümüzü belirlemek istiyoruz. Olay sayılarını azalan sırada sıralayacağız; böylece en fazla olaya sahip tarih satır numarası, rank ve dense rank olarak 1 alacak, devamı da buna göre gelecektir. Takibi kolaylaştırmak için yalnızca en az 8 olaya sahip tarihleri dahil edeceğiz.
Bu egzersiz, kursun bir parçasıdır
SQL Server'da Zaman Serisi Analizi
Egzersiz talimatları
- Sütun takma adlarına göre her pencere fonksiyonunu doldur.
ROW_NUMBER(),RANK()veDENSE_RANK()fonksiyonlarının her birini tam olarak bir kez kullanmalısın. OVERifadesindeir.NumberOfIncidentssütununa göre azalan sırada sıralama yap.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
SELECT
ir.IncidentDate,
ir.NumberOfIncidents,
-- Fill in each window function and ordering
-- Note that all of these are in descending order!
___() OVER (___ ___ ir.NumberOfIncidents ___) AS rownum,
___() OVER (___ ___ ir.NumberOfIncidents ___) AS rk,
___() OVER (___ ___ ir.NumberOfIncidents ___) AS dr
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentTypeID = 3
AND ir.NumberOfIncidents >= 8
ORDER BY
ir.NumberOfIncidents DESC;