Mulai sekarangMulai gratis

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

Lihat Kursus

Instruksi latihan

  • Lengkapi setiap fungsi window sesuai alias kolom. Anda harus menyertakan ROW_NUMBER(), RANK(), dan DENSE_RANK() masing-masing satu kali.
  • Lengkapi klausa OVER dengan mengurutkan berdasarkan ir.NumberOfIncidents dalam 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;
Edit dan Jalankan Kode