Funkcja okna rangi MySQL

Funkcja okna rangi MySQL
Metoda rankingowa przydziela ranga wewnątrz partycji wyniku zestawu do każdego wiersza. Ranga rządu jest określana przez zwiększenie jednej liczby szeregów z poprzedniej rzędu. MySQL wykorzystuje funkcję rankingową, która pomaga jednej rangi na rząd w partycji schematu. W MySQL metody oceny są rzeczywiście częściowo częścią metody okien. Będziesz używał metod oceny w MySQL z kolejnymi klauzulami:
  • Metody zawsze działają z klauzulą ​​Over ().
  • W kolejności chronologicznej przeznaczają każdy rząd rangę.
  • W zależności od kolejności funkcje przydzielają rangę do każdego wiersza.
  • Rzędy zawsze wydają się przydzielone do nich ranga, zaczynając od jednego na każdą nową partycję.

W sumie istnieją trzy rodzaje funkcji rankingowych, jak następuje:

  • Ranga
  • Gęsta ranga
  • Procent rang

MySQL Rank ():

Jest to metoda, która daje rangę w partycji lub tablicy wyników z luki na rząd. Chronologicznie ranking rzędów nie jest przez cały czas nieorządkowany (ja.mi., Zwiększony o jeden z poprzedniego rzędu). Nawet gdy masz powiązanie między kilkoma wartościami, w tym momencie narzędzie rank () stosuje ten sam ranking. Ponadto jego wcześniejsza ranga plus liczba powtarzanych liczb może być kolejnym numerem rang.

Aby zrozumieć ranking, otwórz powłokę klienta wiersza poleceń i wpisz swoje hasło MySQL, aby zacząć go używać.

Załóżmy, że mamy poniższą tabelę o nazwie „Same” w bazie danych „Dane”, z niektórymi rekordami.

>> Wybierz * z danych.To samo;

Przykład 01: prosta ranga ()

Poniżej używamy funkcji rang w ramach polecenia Select. To zapytanie wybiera kolumnę „id” z tabeli „same”, jednocześnie ranking według kolumny „id”. Jak widać, podaliśmy kolumnę rankingową nazwę, która jest „my_rank”. Ranking będzie teraz przechowywany w tej kolumnie, jak pokazano poniżej.

>> Wybierz id, rank () ponad (zamówienie według id) my_rank z fata.To samo;

Przykład 02: rank () za pomocą partycji

Załóżmy inną tabelę „pracownik” w bazie danych „Dane” z następującymi rekordami. Miejmy kolejną instancję, która dzieli wynik ustawiony na segmenty.

>> Wybierz * z danych.pracownik;

Aby pochłonąć metodę rank (), kolejne instrukcje przypisuje rangę do każdego wiersza i dzieli wyniki ustawione na partycje wykorzystujące „wiek” i sortowanie ich w zależności od „wynagrodzenia”. To zapytanie przynosi wszystkie rekordy, ranking w kolumnie „New_Rank”. Poniżej możesz zobaczyć wyjście tego zapytania. Zastosował tabelę zgodnie z „wynagrodzeniem” i podzielił ją według „wieku”.

>> Wybierz *, rank () ponad (partycja według kolejności wiekowej według pensji) new_rank z danych.pracownik;

Mysql gense_rank ():

To jest funkcja, w której, bez dziur, określa ranga na każdy rząd w zestawie dywizji lub wyników. Ranking wierszy jest najczęściej przydzielany w kolejności sekwencyjnej. Czasami masz powiązanie między wartościami, a zatem jest przypisany do dokładnej rangi według gęstej rangi, a jego kolejna ranga jest kolejną kolejną liczbą.

Przykład 01: prosty gense_rank ()

Załóżmy, że mamy tabelę „Pracownik” i musisz uszeregować kolumny tabeli, „Nazwa” i „Wynagrodzenie” zgodnie z kolumną „Nazwa”. Stworzyliśmy nową kolumnę „dens_rank” do przechowywania w nim oceny rekordów. Po wykonaniu poniższego zapytania mamy następujące wyniki z różnym rankingiem do wszystkich wartości.

>> Wybierz nazwę, wynagrodzenie, Gense_Rank () Over (zamówienie według nazwy) dens_rank z danych.pracownik;

Przykład 02: Gens_Rank () za pomocą partycji

Zobaczmy inny przypadek, który dzieli wynik ustawiony na segmenty. Zgodnie z poniższą składnią, wynikowy zestaw partycjonowany przez partycję przez frazę jest zwracany przez instrukcję z from, a metoda gense_rank () jest następnie rozmazana do każdej sekcji za pomocą kolumny „nazwa”. Następnie dla każdego segmentu kolejność wyrażenia rozmazuje się, aby określić imperatyw rzędów za pomocą kolumny „wiek”.

>> Wybierz nazwę, wiek, wynagrodzenie, gense_rank () Over (partycja według nazwy według wieku) new_rank z danych.pracownik;

Po wykonaniu powyższego zapytania widać, że mamy bardzo wyraźny wynik w porównaniu z metodą pojedynczej gęstej_rank () w powyższym przykładzie. Mamy tę samą powtarzaną wartość dla każdej wartości wiersza, jak widać poniżej. To remis wartości rang.

Mysql Procent_Rank ():

Jest to rzeczywiście metoda rankingu procentowego (porównawcza ranga), która oblicza rzędy wewnątrz partycji lub kolekcji wyników. Ta metoda zwraca listę ze skali wartości zero do 1.

Przykład 01: prosty procent_rank ()

Korzystając z tabeli „pracownik”, patrzyliśmy na przykład metody prostej Procent_Rank (). Mamy do tego podane poniżej zapytanie. Kolumna Per_Rank została wygenerowana metodą Procent_Rank () w celu uzyskania zestawu wyników w formie procentowej. Prowadziliśmy dane zgodnie z kolejnością sortowania kolumny „wiek”, a następnie uszeregowaliśmy wartości z tej tabeli. Wynik zapytania dla tego przykładu podał nam procentowy ranking dla wartości przedstawionych na poniższym obrazku.

>> Wybierz *, procent_rank () ponad (zamówienie według wieku) per_rank z danych.pracownik;

Przykład 02: procent_rank () za pomocą partycji

Po wykonaniu prostego przykładu Procent_Rank (), teraz jest to kolej dla klauzuli „partycja przez”. Używamy tej samej tabeli „pracownik”. Rzućmy kolejne spojrzenie na inny przypadek, który dzieli wynik ustawiony na sekcje. Podane z poniższej składni, wynikowa ściana ustawiona przez partycję według wyrażenia jest zwracana przez Deklaracja, a także metoda Procent_Rank () jest następnie wykorzystywana do rankingu każdego rzędu wiersza według kolumny „Nazwa”. Na obrazie wyświetlonym poniżej możesz zobaczyć zestaw wyników zawiera tylko wartości 0 i 1.

>> Wybierz *, Procent_Rank () Over (partycja według zamówienia wynagrodzenia według nazwy) per_rank z danych.pracownik;

Wniosek:

Na koniec wykonaliśmy wszystkie trzy funkcje rankingowe dla rzędów używanych w MySQL, za pośrednictwem powłoki klienta linii poleceń MySQL. W naszym badaniu wzięliśmy pod uwagę zarówno prostą, jak i partycję według klauzuli.