ROW_NUMBER (Norsk)
Syntaks
Beskrivelse av illustrasjon row_number.gif
Se også:
«Analytiske funksjoner» for informasjon om syntaks, semantikk og begrensninger
Formål
ROW_NUMBER
er en analytisk funksjon. Den tilordner et unikt nummer til hver rad det brukes på (enten hver rad i partisjonen eller hver rad som returneres av spørringen), i den ordnede rekkefølgen av rader som er spesifisert i order_by_clause
, begynner med 1.
Ved å hekke et underspørring ved hjelp av ROW_NUMBER
i et spørsmål som henter ROW_NUMBER
verdiene for angitt område, kan du finne et presist delsett av rader fra resultatene av det indre spørringen. Denne bruken av funksjonen lar deg implementere topp-N, bunn-N og indre-N rapportering. For konsekvente resultater må spørringen sikre en deterministisk sorteringsrekkefølge.
Du kan ikke bruke ROW_NUMBER
eller noen annen analytisk funksjon for expr
. Det vil si at du ikke kan rede analytiske funksjoner, men du kan bruke andre innebygde funksjonsuttrykk for expr
. Se «Om SQL Expressions» for informasjon om gyldige former for expr
.
Eksempler
For hver avdeling i eksempeltabellen oe.employees
, tildeler følgende eksempel tall til hver rad i rekkefølge etter ansattes ansettelsesdato:
ROW_NUMBER
er en ikke-bestemt funksjon. Imidlertid er employee_id
en unik nøkkel, så resultatene av denne applikasjonen av funksjonen er deterministiske.
Se også:
FIRST_VALUE og LAST_VALUE for eksempler på ikke-deterministisk oppførsel
Følgende inner-N-spørring velger alle rader fra employees
-tabellen, men returnerer bare den femtiførste til en- hundre rad:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;