ComeçarComece de graça

Contrastando ROW_NUMBER(), RANK() e DENSE_RANK()

Entre as funções de janela de classificação, ROW_NUMBER() é a mais comum, seguida por RANK() e DENSE_RANK(). Cada uma dessas funções de classificação (assim como NTILE()) oferece uma forma diferente de ranquear registros no SQL Server.

Neste exercício, queremos descobrir com que frequência vemos o tipo de incidente 3 no nosso conjunto de dados. Queremos classificar o número de incidentes em ordem decrescente, de modo que a data com o maior número de incidentes receba número da linha, rank e dense rank iguais a 1, e assim por diante. Para facilitar o acompanhamento, vamos incluir apenas as datas com pelo menos 8 incidentes.

Este exercício faz parte do curso

Análise de Séries Temporais no SQL Server

Ver curso

Instruções do exercício

  • Preencha cada função de janela com base no alias da coluna. Você deve incluir ROW_NUMBER(), RANK() e DENSE_RANK() exatamente uma vez.
  • Preencha a cláusula OVER ordenando por ir.NumberOfIncidents em ordem decrescente.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código