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;