BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

Egzersiz talimatları

  • Sütun takma adlarına göre her pencere fonksiyonunu doldur. ROW_NUMBER(), RANK() ve DENSE_RANK() fonksiyonlarının her birini tam olarak bir kez kullanmalısın.
  • OVER ifadesinde ir.NumberOfIncidents sü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;
Kodu Düzenle ve Çalıştır