ROW_NUMBER (Svenska)
Syntax
Beskrivning av illustration row_number.gif
Se även:
”Analytiska funktioner” för information om syntax, semantik och begränsningar
Syfte
ROW_NUMBER
är en analytisk funktion. Det tilldelar ett unikt nummer till varje rad som det tillämpas på (antingen varje rad i partitionen eller varje rad som returneras av frågan), i den ordnade sekvensen av rader som anges i order_by_clause
, börjar med 1.
Genom att bygga en underfråga med ROW_NUMBER
i en fråga som hämtar ROW_NUMBER
-värdena för angivet intervall kan du hitta en exakt delmängd av rader från resultaten från den inre frågan. Denna användning av funktionen låter dig implementera topp-N, botten-N och inre-N rapportering. För konsekventa resultat måste frågan säkerställa en deterministisk sorteringsordning.
Du kan inte använda ROW_NUMBER
eller någon annan analytisk funktion för expr
. Det vill säga att du inte kan hysa analytiska funktioner, men du kan använda andra inbyggda funktionsuttryck för expr
. Se ”Om SQL Expressions” för information om giltiga former av expr
.
Exempel
För varje avdelning i provtabellen oe.employees
, följande exempel tilldelar nummer till varje rad i ordning efter anställdas anställningsdatum:
ROW_NUMBER
är nondeterministic function. employee_id
är dock en unik nyckel, så resultatet av denna tillämpning av funktionen är deterministisk.
Se även:
FIRST_VALUE och LAST_VALUE för exempel på icke-bestämd beteende
Följande inner-N-fråga väljer alla rader från employees
-tabellen men returnerar bara den femtio första genom en- hundradrad:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;