Začněte nyníZačněte zdarma

Porovnání funkcí ROW_NUMBER(), RANK() a DENSE_RANK()

Mezi okenními funkcemi pro řazení je nejčastěji používaná ROW_NUMBER(), následovaná funkcemi RANK() a DENSE_RANK(). Každá z těchto funkcí (stejně jako NTILE()) nabízí jiný způsob, jak řadit záznamy v SQL Serveru.

V tomto cvičení chceme zjistit, jak často se v naší datové sadě vyskytuje typ incidentu 3. Záznamy seřadíme podle počtu incidentů sestupně, takže datum s nejvyšším počtem incidentů bude mít pořadové číslo, rank i dense rank rovné 1. Pro přehlednost zobrazíme pouze data s alespoň 8 incidenty.

Toto cvičení je součástí kurzu

Time Series Analysis in SQL Server

Zobrazit kurz

Pokyny k cvičení

  • Doplň jednotlivé okenní funkce podle aliasů sloupců. Každou z funkcí ROW_NUMBER(), RANK() a DENSE_RANK() použij právě jednou.
  • Doplň klauzuli OVER s řazením podle ir.NumberOfIncidents v sestupném pořadí.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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;
Upravit a spustit kód