SQL ROW_NUMBER

Samenvatting: in deze tutorial leer je hoe je de ROW_NUMBER() gebruikt om een volgnummer aan elke rij toe te wijzen in een queryresultaatset.

SQL ROW_NUMBER () Functieoverzicht

De ROW_NUMBER() is een vensterfunctie die een opeenvolgend geheel getal toewijst aan elke rij in de resultatenset van de query.

Het volgende illustreert de syntaxis van de ROW_NUMBER() -functie:

In deze syntaxis,

  • Ten eerste verdeelt de PARTITION BY -clausule de resultaatset die wordt geretourneerd door de FROM clausule in partities. De PARTITION BY -clausule is optioneel. Als je het weglaat, wordt de hele resultatenset behandeld als een enkele partitie.
  • Vervolgens sorteert de ORDER BY -clausule de rijen in elke partitie. Omdat de ROW_NUMBER() een ordergevoelige functie is, is de ORDER BY -clausule vereist.
  • Ten slotte is elke rij in elke partitie krijgt een opeenvolgend geheel getal toegewezen dat een rijnummer wordt genoemd. Het rijnummer wordt opnieuw ingesteld wanneer de partitiegrens wordt overschreden.

SQL ROW_NUMBER () voorbeelden

We zullen de employees en departments tabellen uit de voorbeelddatabase voor de demonstratie:

A) Eenvoudige SQL ROW_NUMBER () voorbeeld

De volgende verklaring vindt de voornaam, achternaam en salaris van alle werknemers. Bovendien gebruikt het de functie ROW_NUMBER() om een opeenvolgend geheel getal aan elke rij toe te voegen.

De volgende afbeelding toont de gedeeltelijke resultaatset:

B ) SQL ROW_NUMBER () gebruiken voor paginering

De functie ROW_NUMBER() kan worden gebruikt voor paginering. Als u bijvoorbeeld alle werknemers op een tabel in een toepassing wilt weergeven op pagina’s, waarbij elke pagina tien records heeft.

  • Gebruik eerst de ROW_NUMBER() functie om elke rij een opeenvolgend geheel getal toe te wijzen.
  • Ten tweede, filter rijen op gevraagde pagina. De eerste pagina heeft bijvoorbeeld de rijen die beginnen van één tot en met 9, en de tweede pagina heeft de rijen die beginnen van 11 tot en met 20, enzovoort.

De volgende instructie retourneert de records van op de tweede pagina heeft elke pagina tien records.

Het volgende toont de uitvoer:

Als u de algemene tabelexpressie (CTE) wilt gebruiken in plaats van de subquery, is hier de query:

C) SQL ROW_NUMBER gebruiken () voor het vinden van de op één na hoogste waarde per groep

Het volgende voorbeeld laat zien hoe u de werknemers kunt vinden met het hoogste salaris op hun afdeling:

In de subquery:

  • Ten eerste verdeelt de PARTITION BY -clausule de werknemers per afdeling.
  • Ten tweede, de ORDER BY clausule sorteert de werknemer in elke afdeling op salaris in aflopende volgorde.
  • Ten derde wijst de ROW_NUMBER() elke rij een opeenvolgend geheel getal toeHet reset het nummer wanneer de afdeling verandert.

Het volgende toont de resultatenset van de subquery:

In de buitenste zoekopdracht hebben we alleen de werknemersrijen geselecteerd met de row_num met de waarde 1.

Hier is de uitvoer van de hele zoekopdracht:

Als u het predikaat in de WHERE -clausule wijzigt van 1 in 2, 3, enzovoort, krijgt u de werknemers die het op een na hoogste salaris, het op twee na hoogste salaris, enzovoort.

In deze tutorial heeft u geleerd hoe u de SQL ROW_NUMBER() -functie gebruikt om een sequentiële geheel getal voor elke rij in de resultatenset van een query.

  • Was deze tutorial nuttig?
  • JaNee

Write a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *