ROW_NUMBER (Polski)
Składnia
Opis illustration row_number.gif
Zobacz także:
„Funkcje analityczne”, aby uzyskać informacje na temat składni, semantyki i ograniczeń
Cel
ROW_NUMBER
to funkcja analityczna. Przypisuje unikalną liczbę do każdego wiersza, do którego jest zastosowana (albo do każdego wiersza w partycji, albo do każdego wiersza zwróconego przez zapytanie), w uporządkowanej kolejności wierszy określonej w order_by_clause
, zaczynając od 1.
Zagnieżdżając podzapytanie za pomocą ROW_NUMBER
wewnątrz zapytania, które pobiera ROW_NUMBER
wartości dla określony zakres, można znaleźć dokładny podzbiór wierszy z wyników zapytania wewnętrznego. To użycie funkcji umożliwia zaimplementowanie raportowania z góry N, z dołu i N wewnętrznego. Aby uzyskać spójne wyniki, zapytanie musi zapewniać deterministyczną kolejność sortowania.
Nie możesz użyć ROW_NUMBER
ani żadnej innej funkcji analitycznej dla expr
. Oznacza to, że nie możesz zagnieżdżać funkcji analitycznych, ale możesz użyć innych wbudowanych wyrażeń funkcji dla expr
. Aby uzyskać informacje na temat prawidłowych form expr
, zapoznaj się z „O wyrażeniach SQL”.
Przykłady
Dla każdego działu w przykładowej tabeli oe.employees
, poniższy przykład przypisuje numery do każdego wiersza w kolejności daty zatrudnienia pracownika:
ROW_NUMBER
to niedeterministyczna funkcja. Jednak employee_id
jest kluczem unikatowym, więc wyniki tego zastosowania funkcji są deterministyczne.
Zobacz też:
FIRST_VALUE i LAST_VALUE dla przykładów niedeterministycznego zachowania
Następujące zapytanie wewnętrzne-N wybiera wszystkie wiersze z tabeli employees
, ale zwraca tylko od pięćdziesięciu pierwszych do jeden- setny wiersz:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;