Membandingkan ROW_NUMBER(), RANK(), dan DENSE_RANK()
Di antara fungsi window untuk pemeringkatan, ROW_NUMBER() adalah yang paling umum, diikuti oleh RANK() dan DENSE_RANK(). Masing-masing fungsi pemeringkatan ini (serta NTILE()) memberikan cara berbeda untuk memberi peringkat rekaman di SQL Server.
Dalam latihan ini, kita ingin mengetahui seberapa sering kita melihat jenis insiden 3 dalam himpunan data. Kita ingin memberi peringkat jumlah insiden dalam urutan menurun, sehingga tanggal dengan jumlah insiden tertinggi memiliki nomor baris, peringkat, dan peringkat padat bernilai 1, dan seterusnya. Untuk memudahkan mengikuti, kita hanya akan menyertakan tanggal dengan setidaknya 8 insiden.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Lengkapi setiap fungsi window sesuai alias kolom. Anda harus menyertakan
ROW_NUMBER(),RANK(), danDENSE_RANK()masing-masing satu kali. - Lengkapi klausa
OVERdengan mengurutkan berdasarkanir.NumberOfIncidentsdalam urutan menurun.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;