SQL ROW_NUMBER (Svenska)

Sammanfattning: i denna handledning lär du dig hur du använder ROW_NUMBER() för att tilldela ett sekventiellt nummer till varje rad i en sökresultatsats.

SQL ROW_NUMBER () Funktionsöversikt

ROW_NUMBER() är en fönsterfunktion som tilldelar ett sekventiellt heltal till varje rad i sökresultatuppsättningen.

Följande illustrerar syntaxen för ROW_NUMBER() -funktionen:

I denna syntax,

  • Först delar PARTITION BY -satsen den uppsättning som returneras från FROM klausul i partitioner. PARTITION BY -satsen är valfri. Om du utelämnar det behandlas hela resultatuppsättningen som en enda partition.
  • Därefter sorterar ORDER BY -klausulen raderna i varje partition. Eftersom ROW_NUMBER() är en ordningskänslig funktion krävs ORDER BY -satsen.
  • Slutligen måste varje rad i varje partition tilldelas ett sekventiellt heltal som kallas ett radnummer. Radnumret återställs närhelst partitionsgränsen korsas.

SQL ROW_NUMBER () exempel

Vi använder employees och departments tabeller från exempeldatabasen för demonstrationen:

A) Enkel SQL ROW_NUMBER () exempel

Följande uttalande hittar förnamn, efternamn och lön för alla anställda. Dessutom använder den ROW_NUMBER() -funktionen för att lägga till sekventiellt heltal till varje rad.

Följande bild visar delresultatuppsättningen:

B ) Använda SQL ROW_NUMBER () för paginering

Funktionen ROW_NUMBER() kan användas för paginering. Om du till exempel vill visa alla anställda på ett bord i en applikation efter sidor, som varje sida har tio poster.

  • Använd först ROW_NUMBER() funktion för att tilldela varje rad ett sekventiellt heltal.
  • För det andra, filtrera rader efter önskad sida. Till exempel har den första sidan raderna som börjar från en till 9, och den andra sidan har raderna som börjar från 11 till 20 och så vidare.

Följande uttalande returnerar posterna för den andra sidan, varje sida har tio poster.

Följande visar utdata:

Om du vill använda det gemensamma tabelluttrycket (CTE) istället för underfrågan är frågan:

C) Använda SQL ROW_NUMBER () för att hitta det nth högsta värdet per grupp

Följande exempel visar hur du hittar de anställda som har högst lön i sina avdelningar:

I underfrågan:

  • Först distribuerar PARTITION BY klausulen de anställda efter avdelningar.
  • För det andra ORDER BY klausul sorterar arbetstagaren i varje avdelning efter lön i fallande ordning.
  • För det tredje tilldelar ROW_NUMBER() varje rad ett sekventiellt heltal . Det återställer numret när avdelningen ändras.

Följande visar resultatuppsättningen för underfrågan:

I den yttre frågan valde vi bara de anställdsrader som har row_num med värdet 1.

Här är resultatet av hela frågan:

Om du ändrar predikatet i WHERE -satsen från 1 till 2, 3 och så vidare får du de anställda som har den näst högsta lönen, den tredje högsta lönen och så vidare.

I denna handledning har du lärt dig hur du använder SQL ROW_NUMBER() -funktionen för att tilldela en sekventiell heltal till varje rad i resultatsatsen för en fråga.

  • Hjälpte den här självstudien?
  • Ja Nej

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *