Kom igångKom igång gratis

Jämförelse av ROW_NUMBER(), RANK() och DENSE_RANK()

Bland rankningsfönsterfunktionerna är ROW_NUMBER() den vanligaste, följt av RANK() och DENSE_RANK(). Var och en av dessa rankningsfunktioner (liksom NTILE()) ger ett olika sätt att rangordna poster i SQL Server.

I den här övningen ska vi ta reda på hur ofta incidenttyp 3 förekommer i vår datamängd. Vi vill rangordna antalet incidenter i fallande ordning, så att datumet med flest incidenter får radnummer, rang och tät rang lika med 1, och så vidare. För att göra det lättare att följa inkluderar vi bara datum med minst 8 incidenter.

Den här övningen är en del av kursen

Tidsserieanalys i SQL Server

Visa kurs

Övningsinstruktioner

  • Fyll i varje fönsterfunktion utifrån kolumnaliaset. Du ska använda ROW_NUMBER(), RANK() och DENSE_RANK() exakt en gång vardera.
  • Fyll i OVER-satsen med sortering på ir.NumberOfIncidents i fallande ordning.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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;
Redigera och kör kod