ÎncepețiÎncepe gratuit

Comparație între ROW_NUMBER(), RANK() și DENSE_RANK()

Dintre funcțiile de fereastră pentru clasament, ROW_NUMBER() este cea mai frecvent utilizată, urmată de RANK() și DENSE_RANK(). Fiecare dintre aceste funcții (precum și NTILE()) oferă o modalitate diferită de a clasifica înregistrările în SQL Server.

În acest exercițiu, vrem să determinăm cât de frecvent apare tipul 3 de incident în setul nostru de date. Dorim să clasăm numărul de incidente în ordine descrescătoare, astfel încât data cu cel mai mare număr de incidente să primească numărul de rând, rangul și rangul dens egal cu 1, și tot așa mai departe. Pentru a fi mai ușor de urmărit, vom include doar datele cu cel puțin 8 incidente.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează fiecare funcție de fereastră în funcție de aliasul coloanei. Trebuie să folosești ROW_NUMBER(), RANK() și DENSE_RANK() exact câte o dată.
  • Completează clauza OVER cu ordonare după ir.NumberOfIncidents în ordine descrescătoare.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
Editează și rulează codul