Jak korzystać z numeru wiersza SQL Server

Jak korzystać z numeru wiersza SQL Server
W większości przypadków, gdy musimy numerować elementy w bazie danych, przeskakujemy do właściwości tożsamości. Jednak to, co się stanie, gdy trzeba zaliczyć rzędy wyniku? Tutaj wchodzi funkcja numeru wiersza.

Funkcja numeru wiersza umożliwia przypisanie numeru sekwencyjnego do każdego wiersza w wyniku zapytania SQL.

Funkcja Row_Number () jest częścią funkcji okien SQL Server. Korzystając z tej funkcji, możesz przypisać progresywną liczbę całkowitą do każdego wiersza na każdym zestawie partycji wyniku. Każda liczba zaczyna się od 1 i resetuje rzędy w każdej partycji.

Składnia funkcji i wartość zwracana

Składnia funkcji jest taka jak pokazano:

NUMER WIERSZA ()
Over (partycja przez parition_Expression
Zamów przez order_by_Expression
);

Rozbijmy powyższą składnię.

  1. PARTICJA BY - Klauzula partycja pozwala podzielić wyniki ustawione na różne logiczne partycje. Funkcja Row_number jest następnie stosowana do każdej partycji. Partia według parametru jest opcjonalna, a jeśli nie zostanie określona, ​​funkcja Row_number będzie traktować wynikowy zestaw jako jedyny partycja.
  2. Zamówienie według klauzuli umożliwia kolejność sortowania wierszy w każdym zestawie partycji. W przeciwieństwie do partycji według klauzuli, funkcja Row_number wymaga tej klauzuli jako funkcji wrażliwej na zamówienie.

Funkcja zwraca się, przypisując numer sekwencyjny do wierszy w każdej partycji. Jak wspomniano, funkcja zresetuje numer wiersza dla każdej nowej partycji.

SQL Server Row_number (): Przykłady

Użyjmy przykładu, aby lepiej zrozumieć, jak korzystać z funkcji row_number (). Zacznij od utworzenia przykładowej bazy danych z manekinami, jak pokazano w poniższych zapytaniach:

Utwórz bazę danych manekin_db;
Użyj manekina_db;
Utwórz tabelę manekina_tabla (
Id Int Not Null tożsamość (1,1) klucz podstawowy,
FirstName varchar (50),
LastName Varchar (50),
e -mail varchar (100),
Pieniądze z wynagrodzenia,
Departament Varchar (50)
);
Wstaw do manowych_tabet (pierwsza nazwa, lastName, e -mail, wynagrodzenie, dział)
Wartości („Karen”, „colmen”, „[email protected] ', 149000 $, „Rozwój gier”),
(„Alex”, „Bell”, „[email protected] ', 150000 $, „Rozwój grafiki”),
(„Charles”, „Johnson”, „[email protected] ', 120500 $, „DevOps Development”),
(„Bruce”, „Greer”, „[email protected] ', 118000 $, „rozwój bezpieczeństwa”),
(„Sarah”, „Austin”, „[email protected] ', 165000 $, „Rozwój gier”),
(„Diana”, „Kim”, „[email protected] ', 105000 $, „Rozwój front end”),
(„Peter”, „cogh”, „[email protected] ', 100000 $, „Rozwój grafiki”),
(„David”, „Hugh”, „[email protected] ', 126000 $, „Rozwój bazy danych”),
(„Tobias”, „Newne”, „[email protected] ', 115500 $, „Rozwój bazy danych”),
(„Winnie”, „Lorentz”, „[email protected] ', 175000 $, „Rozwój grafiki”),
(„Guy”, „Miche”, „[email protected] ', 145000 $, „Rozwój gry”);
Wybierz * z mangi_table;

Powyższe zapytanie powinno zwrócić wynikowy zestaw, jak pokazano:

Przykład 1

Poniższa instrukcja SQL używa funkcji Row_Number, aby przypisać numer sekwencyjny do wierszy w uzyskanym zestawie:

Wybierz Row_number () Over (
Zamówienie według wynagrodzenia) jako row_num,
imię,
nazwisko,
dział
Z manekinu_table;

Powyższe zapytanie powinno zwrócić zestaw wyników, jak pokazano poniżej:

Przykład 2

Możemy użyć funkcji Row_number, aby zlokalizować pracownika o najwyższym wynagrodzeniu w określonym dziale.

Rozważ przykładowe zapytanie pokazane poniżej:

Wybierz nazwę FirstName, LastName, wynagrodzenie, dział, Row_number () Over (partycja według zamówienia działu według wynagrodzenia desc) jako row_num z manekinu_table;

Powyższe zapytanie dzieli dane na partycje logiczne na podstawie działu. Następnie stosujemy funkcję row_number () do zamówienia przez wynagrodzenie w kolejności malejącej.

Przykład 3

Możesz użyć funkcji Row_number do paginacji. Ponieważ funkcja Row_Number przypisuje numer sekwencyjny do wszystkich wierszy, możemy go użyć do filtrowania dla określonej liczby wyników na stronę.

Weź poniższy przykład:

WYBIERZ SPOŚRÓD
(Wybierz row_number ()
Over (zamówienie według wynagrodzenia) jako Row_num, FirstName, LastName, Department
Od manekinu_table) dt
Gdzie row_num> = 1 i row_num <= 5;

Powyższe zapytanie powinno zwrócić wyjście jako:

Wniosek

W tym przewodniku omówiliśmy, jak korzystać z funkcji SQL Server Row_number () do przypisania numerów sekwencyjnych do wierszy w zestawie wyników. Ponadto dokonaliśmy przeglądu składni funkcji i wartości zwracania. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź więcej artykułów z Linux, aby uzyskać wskazówki i samouczki.