Inizia subitoInizia gratis

Confronto tra ROW_NUMBER(), RANK() e DENSE_RANK()

Tra le funzioni di finestra per il ranking, ROW_NUMBER() è la più comune, seguita da RANK() e DENSE_RANK(). Ognuna di queste funzioni di ranking (così come NTILE()) offre un modo diverso per classificare i record in SQL Server.

In questo esercizio, vogliamo capire con quale frequenza compare il tipo di incidente 3 nel nostro insieme di dati. Vogliamo classificare il numero di incidenti in ordine decrescente, in modo che la data con il numero più alto di incidenti abbia row number, rank e dense rank pari a 1, e così via. Per rendere il tutto più chiaro, includeremo solo le date con almeno 8 incidenti.

Questo esercizio fa parte del corso

Analisi delle serie temporali in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Compila ciascuna funzione di finestra in base all'alias di colonna. Dovresti includere ROW_NUMBER(), RANK() e DENSE_RANK() una sola volta ciascuna.
  • Completa la clausola OVER ordinando per ir.NumberOfIncidents in ordine decrescente.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice