Aan de slagGa gratis aan de slag

Verschil tussen ROW_NUMBER(), RANK() en DENSE_RANK()

Van de ranking-windowfuncties komt ROW_NUMBER() het meest voor, gevolgd door RANK() en DENSE_RANK(). Elke van deze rankingfuncties (net als NTILE()) biedt een andere manier om records te rangschikken in SQL Server.

In deze oefening willen we bepalen hoe vaak we incidenttype 3 tegenkomen in onze gegevensset. We willen het aantal incidenten rangschikken in aflopende volgorde, zodat de datum met het hoogste aantal incidenten een row number, rank en dense rank van 1 krijgt, enzovoort. Om het overzichtelijk te houden nemen we alleen datums op met minimaal 8 incidenten.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in SQL Server

Cursus bekijken

Oefeninstructies

  • Vul elke windowfunctie in op basis van de kolomalias. Je moet ROW_NUMBER(), RANK() en DENSE_RANK() elk precies één keer opnemen.
  • Vul de OVER-clausule in met sortering op ir.NumberOfIncidents in aflopende volgorde.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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;
Code bewerken en uitvoeren