ROW_NUMBER (Română)
Sintaxă
Descrierea illustration row_number.gif
Consultați și:
„Funcții analitice” pentru informații despre sintaxă, semantică și restricții
Scop
ROW_NUMBER
este o funcție analitică. Atribuie un număr unic fiecărui rând căruia i se aplică (fie fiecare rând din partiție, fie fiecare rând returnat de interogare), în secvența ordonată de rânduri specificată în order_by_clause
, începând cu 1.
Prin imbricarea unei subinterogări folosind ROW_NUMBER
într-o interogare care recuperează valorile ROW_NUMBER
pentru o intervalul specificat, puteți găsi un subset precis de rânduri din rezultatele interogării interioare. Această utilizare a funcției vă permite să implementați raportare top-N, bottom-N și internal-N. Pentru rezultate consecvente, interogarea trebuie să asigure o ordine de sortare deterministă.
Nu puteți utiliza ROW_NUMBER
sau orice altă funcție analitică pentru expr
. Adică nu puteți cuibări funcții analitice, dar puteți utiliza alte expresii de funcții încorporate pentru expr
. Vă rugăm să consultați „Despre expresiile SQL” pentru informații despre formele valide ale expr
.
Exemple
Pentru fiecare departament din tabelul eșantion oe.employees
, exemplul următor atribuie numere fiecărui rând în ordinea datei angajării angajatului:
ROW_NUMBER
este un funcție nedeterministă. Cu toate acestea, employee_id
este o cheie unică, astfel încât rezultatele acestei aplicații a funcției sunt deterministe.
Vezi și:
FIRST_VALUE și LAST_VALUE pentru exemple de comportament nedeterministic
Următoarea interogare interioară-N selectează toate rândurile din tabelul employees
, dar returnează doar cincizeci și unu prin unu- rândul sutei:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;