Funkcja SQL DENSE_RANK().

Funkcja Sql Dense Rank



Funkcje okien są kluczową cechą języka SQL i odgrywają zasadniczą rolę w złożonych obliczeniach danych i operacjach w bazach danych SQL. Jedną z funkcji okna SQL jest gęsta_rank().

Funkcja DENSE_RANK() pozwala nam przypisać unikalną rangę do każdego wiersza w zestawie wyników na podstawie wartości w jeszcze jednej określonej kolumnie. Jest bardzo podobna do funkcji rank(), ale z niewielkimi różnicami w sposobie, w jaki funkcja obsługuje zduplikowane rekordy.

W tym samouczku przyjrzymy się działaniu tej funkcji, podanej składni i sposobowi wykorzystania jej w bazie danych.







Jak to działa

Zacznijmy od wyjaśnienia, jak działa ta funkcja. Warto pamiętać, że funkcja jest na wysokim poziomie i nie możemy wyjaśnić leżącej u jej podstaw implementacji.



Funkcja działa poprzez przypisanie rangi do każdego wiersza w zestawie wyników, zaczynając od rangi 1 i zwiększając ją o 1 dla każdej unikalnej wartości w kolumnach.



Wierszom o podobnych wartościach (duplikatom) w określonych kolumnach przypisuje się tę samą rangę, a kolejnemu wierszowi o innej wartości przypisuje się kolejną dostępną rangę, bez żadnych przerw.





Jak wspomnieliśmy, funkcja nie pozostawia żadnych luk tam, gdzie występują zduplikowane wartości, co odróżnia ją od funkcji rank().

Powszechnym zastosowaniem funkcji gęstej_rank() jest wykonywanie operacji rankingowych. Możemy go na przykład użyć do znalezienia N pierwszych rekordów itp.



Składnia funkcji:

Poniżej opisano składnię funkcji gęstej_rank():

DENSE_RANK() PONAD (

[PODZIAŁ WEDŁUG wyrażenia_partycji, ... ]

ZAMÓWIENIE BY wyrażenie_sortowania [ASC | DESC], ...

)

W podanej składni:

  1. Zaczynamy od samej funkcji gęstej_rank().
  2. Klauzula OVER sygnalizuje rozpoczęcie specyfikacji funkcji okna. Określa sposób stosowania rankingu w zestawie wyników.
  3. PARTITION BY wyrażenie_partycji to opcjonalna klauzula, która pozwala nam podzielić wynikowy zestaw na grupy lub partycje w oparciu o jedną lub więcej kolumn. Ranking jest stosowany oddzielnie dla każdej partycji, przy czym ranga jest resetowana w nowej partycji.
  4. ORDER BY wyrażenie_sortowania określa kolejność, w jakiej chcemy sortować dane w wynikowych partycjach.

Przykładowe dane

Aby zademonstrować sposób użycia funkcji gęstej_rank(), zacznijmy od tabeli z przykładowymi danymi. W naszym przypadku korzystamy z przykładowej tabeli „zamówień” w następujący sposób:

Przykład 1: Użycie funkcji Dense_Rank().

Możemy użyć funkcji gęstej_rank(), aby uszeregować powstałe zamówienia na podstawie ceny. Rozważ następujące przykładowe zapytanie:

WYBIERAĆ

identyfikator_zamówienia,

nazwa_użytkownika klienta,

produkt_zakupiony,

DENSE_RANK() PONAD (

ZAMÓWIENIE PRZEZ

cena DYSK

) pozycja_ceny

Z

zamówienia o;

W podanym przykładzie używamy funkcji gęstej_rank() do uszeregowania danych na podstawie ceny zamówień. Pomijamy klauzulę PARTITION BY, gdyż nie grupujemy danych.

Wynikowy wynik jest następujący:

Przykład 2: PODZIAŁ WEDŁUG

Możemy również dodać klauzulę PARTITION BY, aby pogrupować dane w różne segmenty, np. na podstawie zakupionego produktu.

Przykładowe zapytanie wygląda następująco:

WYBIERAĆ

identyfikator_zamówienia,

nazwa_użytkownika klienta,

produkt_zakupiony,

DENSE_RANK() PONAD (

partycja według produktu_zakupionego

ZAMÓWIENIE PRZEZ

cena DYSK

) pozycja_ceny

Z

zamówienia o;

Powinno to pogrupować dane w różne grupy w oparciu o powstałe grupy i zastosować rangę dla pozycji w każdej grupie.

Wniosek

W tym poście poznaliśmy podstawy używania i pracy z funkcją okienkowądens_rank() w języku SQL w celu przypisania rangi wartościom na podstawie określonych kolumn.