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;