EmpezarEmpieza gratis

Comparar ROW_NUMBER(), RANK() y DENSE_RANK()

Entre las funciones de ventana de ordenación, ROW_NUMBER() es la más habitual, seguida de RANK() y DENSE_RANK(). Cada una de estas funciones de clasificación (así como NTILE()) nos ofrece una forma diferente de ordenar registros en SQL Server.

En este ejercicio, queremos determinar con qué frecuencia aparece el tipo de incidente 3 en nuestro conjunto de datos. Queremos ordenar el número de incidentes en orden descendente, de modo que la fecha con el mayor número de incidentes tenga número de fila, rango y rango denso igual a 1, y así sucesivamente. Para que sea más fácil de seguir, solo incluiremos las fechas con al menos 8 incidentes.

Este ejercicio forma parte del curso

Análisis de series temporales en SQL Server

Ver curso

Instrucciones del ejercicio

  • Completa cada función de ventana según el alias de columna. Debes incluir ROW_NUMBER(), RANK() y DENSE_RANK() exactamente una vez.
  • Completa la cláusula OVER ordenando por ir.NumberOfIncidents en orden descendente.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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;
Editar y ejecutar código