SQL ROW_NUMBER (Dansk)

Oversigt: I denne vejledning lærer du, hvordan du bruger ROW_NUMBER() til at tildele et rækkefølge til hver række i et forespørgselsresultatsæt.

SQL ROW_NUMBER () Funktionsoversigt

ROW_NUMBER() er en vinduesfunktion, der tildeler et sekventielt heltal til hver række i forespørgslens resultatsæt.

Følgende illustrerer syntaksen for ROW_NUMBER() -funktionen:

I denne syntaks,

  • Først deler PARTITION BY -klausulen det resultatsæt, der returneres fra FROM klausul i partitioner. PARTITION BY -klausulen er valgfri. Hvis du udelader det, behandles hele resultatsættet som en enkelt partition.
  • Derefter ORDER BY klausul sorterer rækkerne i hver partition. Fordi ROW_NUMBER() er en rækkefølsom funktion, kræves ORDER BY -klausulen.
  • Endelig skal hver række i hver partition tildeles et sekventielt heltal kaldet et række nummer. Rækkens nummer nulstilles, når partitionsgrænsen krydses.

SQL ROW_NUMBER () eksempler

Vi bruger employees og departments tabeller fra eksempeldatabasen til demonstrationen:

A) Simple SQL ROW_NUMBER () eksempel

Følgende udsagn finder fornavn, efternavn og løn for alle medarbejdere. Derudover bruger den funktionen ROW_NUMBER() til at tilføje sekventielt heltal til hver række.

Det følgende billede viser delresultatsættet:

B ) Brug af SQL ROW_NUMBER () til pagination

Funktionen ROW_NUMBER() kan bruges til pagination. Hvis du f.eks. Vil vise alle medarbejdere på et bord i en applikation efter sider, som hver side har ti poster.

  • Brug først ROW_NUMBER() -funktion for at tildele hver række et sekventielt heltal.
  • For det andet filtrer rækker efter anmodet side. For eksempel har den første side rækkerne, der starter fra en til 9, og den anden side har rækkerne, der starter fra 11 til 20 osv.

Følgende udsagn returnerer posterne for den anden side, hver side har ti poster.

Følgende viser output:

Hvis du vil bruge det fælles tabeludtryk (CTE) i stedet for underforespørgslen, er her forespørgslen:

C) Brug af SQL ROW_NUMBER () for at finde den højeste værdi pr. gruppe

Følgende eksempel viser dig, hvordan du finder de ansatte, der har den højeste løn i deres afdelinger:

I underforespørgslen:

  • For det første fordeler PARTITION BY -klausulen medarbejderne efter afdelinger.
  • For det andet ORDER BY klausul sorterer medarbejderen i hver afdeling efter løn i faldende rækkefølge.
  • For det tredje tildeler ROW_NUMBER() hver række et sekventielt heltal . Det nulstiller antallet, når afdelingen skifter.

Følgende viser resultatsættet for underforespørgslen:

I den ydre forespørgsel valgte vi kun medarbejderrækken, der har row_num med værdien 1.

Her er output fra hele forespørgslen:

Hvis du ændrer prædikatet i WHERE -sætningen fra 1 til 2, 3 osv., får du de ansatte, der har den næsthøjeste løn, tredje højeste løn og så videre.

I denne vejledning har du lært, hvordan du bruger SQL ROW_NUMBER() -funktionen til at tildele en sekventiel heltal til hver række i resultatsættet for en forespørgsel.

  • Var denne tutorial nyttig?
  • Ja Nej

Write a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *