SQL ROW_NUMBER (Norsk)

Sammendrag: i denne opplæringen lærer du hvordan du bruker ROW_NUMBER() for å tilordne et løpende nummer til hver rad i et søkeresultatsett.

SQL ROW_NUMBER () Funksjonsoversikt

ROW_NUMBER() er en vindusfunksjon som tildeler et sekvensielt heltall til hver rad i resultatsettet til spørringen.

Følgende illustrerer syntaksen til ROW_NUMBER() -funksjonen:

I denne syntaksen,

  • Først deler PARTITION BY ledd resultatsettet returnert fra FROM ledd i partisjoner. PARTITION BY klausulen er valgfri. Hvis du utelater det, blir hele resultatsettet behandlet som en enkelt partisjon.
  • Deretter ORDER BY klausul sorterer radene i hver partisjon. Fordi ROW_NUMBER() er en ordensensitiv funksjon, er ORDER BY klausul nødvendig.
  • Til slutt, hver rad i hver partisjon er tildelt et sekvensielt heltall kalt et radnummer. Radnummeret tilbakestilles når partisjonsgrensen krysses.

SQL ROW_NUMBER () eksempler

Vi vil bruke employees og departments tabeller fra eksempeldatabasen for demonstrasjonen:

A) Enkel SQL ROW_NUMBER () eksempel

Følgende uttalelse finner fornavn, etternavn og lønn til alle ansatte. I tillegg bruker den ROW_NUMBER() -funksjonen for å legge til sekvensielt heltall til hver rad.

Følgende bilde viser delresultatsettet:

B ) Bruke SQL ROW_NUMBER () for paginering

Funksjonen ROW_NUMBER() kan brukes til paginering. Hvis du for eksempel vil vise alle ansatte på et bord i en applikasjon etter sider, som hver side har ti poster.

  • Bruk først ROW_NUMBER() funksjon for å tildele hver rad et sekvensielt heltall.
  • For det andre, filtrer rader etter ønsket side. For eksempel har den første siden radene som starter fra en til 9, og den andre siden har radene som begynner fra 11 til 20, og så videre.

Følgende uttalelse returnerer postene til den andre siden, hver side har ti poster.

Følgende viser utdataene:

Hvis du vil bruke det vanlige tabelluttrykket (CTE) i stedet for underspørringen, er spørringen:

C) Bruk av SQL ROW_NUMBER () for å finne nth høyeste verdi per gruppe

Følgende eksempel viser deg hvordan du finner de ansatte som har høyest lønn i sine avdelinger:

I underforespørselen:

  • Først fordeler PARTITION BY ledd ansatte etter avdelinger.
  • For det andre ORDER BY klausul sorterer arbeidstakeren i hver avdeling etter lønn i fallende rekkefølge.
  • For det tredje tildeler ROW_NUMBER() hver rad et sekvensielt heltall . Den tilbakestiller nummeret når avdelingen endres.

Følgende viser resultatsettet for underspørringen:

I den ytre spørringen valgte vi bare medarbeiderradene som har row_num med verdien 1.

Her er utgangen av hele spørringen:

Hvis du endrer predikatet i WHERE -klausulen fra 1 til 2, 3 og så videre, får du de ansatte som har den nest høyeste lønnen, den tredje høyeste lønnen og så videre.

I denne opplæringen har du lært hvordan du bruker SQL ROW_NUMBER() -funksjonen for å tilordne en sekvensiell heltall til hver rad i resultatsettet til et spørsmål.

  • Var denne opplæringen nyttig?
  • Ja Nei

Write a Comment

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *