MySQL Rangfensterfunktion

MySQL Rangfensterfunktion
Die Ranking -Methode vermittelt einen Rang innerhalb der Partition eines Ergebniss eines Sets für jede Zeile. Der Rang einer Reihe wird durch Inkrementierung einer Zahl von Rängen aus der Zeile bestimmt, die ihm vorausgeht. MySQL verwendet eine Ranking -Funktion, die einen Rang pro Zeile in einer Schema -Partition hilft. In MySQL sind die Bewertungsmethoden in der Tat ein halbiertes Fenstermethode. Sie verwenden die Bewertungsmethoden in MySQL entweder mit den nachfolgenden Klauseln:
  • Die Methoden funktionieren immer mit einer Over () Klausel.
  • In chronologischer Reihenfolge weisen sie jede Reihe einen Rang zu.
  • Abhängig von der Reihenfolge by die Funktionen für jede Zeile einen Rang zugewiesen.
  • Zeilen scheinen ihnen immer einen Rang zugewiesen zu haben, beginnend mit einer für jede neue Partition.

Insgesamt gibt es drei Arten von Ranking -Funktionen wie folgt:

  • Rang
  • Dichter Rang
  • Prozent Rang

MySQL Rank ():

Dies ist eine Methode, die einen Rang innerhalb einer Partition oder eines Ergebnisarrays gibt mit Lücken pro Zeile. Chronologisch ist das Ranking von Zeilen nicht ständig zugestimmt (ich.e., um eins aus der vorherigen Reihe erhöht). Selbst wenn Sie unter mehreren Werten eine Unentschieden haben, wendet das Dienstprogramm Rank () das gleiche Ranking an. Auch sein vorheriger Rang plus eine Zahl wiederholter Zahlen kann die nachfolgende Rangnummer sein.

Öffnen Sie die Befehlszeilenclient-Shell, um das Ranking zu verstehen, und geben Sie Ihr MySQL-Passwort ein, um sie zu verwenden.

Angenommen, wir haben eine folgende Tabelle mit dem Namen „Selb“ in einer Datenbank „Daten“ mit einigen Datensätzen.

>> aus Daten auswählen.Dasselbe;

Beispiel 01: einfacher Rang ()

Im Folgenden haben wir die Rangfunktion innerhalb des Befehls auswählen verwendet. Diese Abfrage wählt die Spalte "ID" aus der Tabelle "Gleich" aus, während sie gemäß der Spalte "ID" eingestuft wird. Wie Sie sehen können, haben wir der Ranking -Spalte einen Namen gegeben, der "my_rank" ist. Das Ranking wird nun in dieser Spalte gespeichert, wie unten gezeigt.

>> ID auswählen, rank () over (bestellen nach id) my_rank von fata.Dasselbe;

Beispiel 02: Rank () Verwenden der Partition

Nehmen Sie eine andere Tabelle „Mitarbeiter“ in einer Datenbank „Daten“ mit den folgenden Datensätzen an. Lassen Sie uns eine weitere Instanz haben, die das Ergebnis in Segmente aufteilt.

>> aus Daten auswählen.Mitarbeiter;

Um die RANK () -Methode zu konsumieren, weist die nachfolgende Anweisung jeder Zeile den Rang zu und unterteilt das Ergebnis in Partitionen unter Verwendung von „Alter“ und sortiert sie je nach „Gehalt“. Diese Abfrage hat alle Datensätze abgerufen, während er in einer Spalte "new_rank" rangiert hat. Sie können die Ausgabe dieser Abfrage unten sehen. Es hat die Tabelle nach „Gehalt“ sortiert und nach „Alter“ geteilt.

>> select *, rank () over (Partition nach Altersauftrag nach Gehalt) new_rank aus Daten.Mitarbeiter;

Mysql dense_rank ():

Dies ist eine Funktionalität, bei der, ohne Löcher, bestimmt einen Rang pro Zeile in einer Division oder Ergebnismenge. Das Ranking von Zeilen wird am häufigsten in sequentieller Reihenfolge zugewiesen. Zuweilen haben Sie ein Unentschieden zwischen den Werten, und daher wird es dem genauen Rang nach dem dichten Rang zugeordnet, und sein nachfolgender Rang ist die nächste folgende Zahl.

Beispiel 01: Einfacher dichter_rank ()

Angenommen, wir haben eine Tabelle "Mitarbeiter", und Sie müssen die Tabellenspalten, "Name" und "Gehalt" gemäß der Spalte "Name" bewerten. Wir haben eine neue Spalte "Dens_Rank" erstellt, um die Bewertung der darin enthaltenen Datensätze zu speichern. Nach Ausführung der folgenden Abfrage haben wir die folgenden Ergebnisse mit unterschiedlichem Ranking für alle Werte.

>> Wählen Sie Name, Gehalt, dense_rank () über (bestellen nach Namen) Dens_Rank aus Daten.Mitarbeiter;

Beispiel 02: Dense_Rank () Verwenden der Partition

Lassen Sie uns eine andere Instanz sehen, die das Ergebnis in Segmente aufteilt. Gemäß der folgenden Syntax wird die resultierende festgelegte durch die Partition nach Phrase verteilte gesetzte festgelegte gesetzt durch die Aussage durch die Partition durch die Aussage zurückgegeben, und die Methode der densen_rank () wird dann mit der Spalte „Name“ in jeden Abschnitt verschmiert, der an jedem Abschnitt verschmiert wird. Dann für jedes Segment die Reihenfolge durch Phrase Abstriche, um den Imperativ der Zeilen mithilfe der Spalte „Alter“ zu bestimmen,.

>> Name, Alter, Gehalt, dense_rank () over (Partition nach Namensordnung nach Alter) New_Rank aus Daten.Mitarbeiter;

Bei der Ausführung der obigen Abfrage sehen Sie im obigen Beispiel ein sehr deutliches Ergebnis im Vergleich zur Einzeldense_Rank () -Methode. Wir haben den gleichen wiederholten Wert für jeden Zeilenwert, wie Sie unten sehen können. Es ist das Unentschieden der Rangwerte.

MySQL Prozent_Rank ():

Es handelt sich in der Tat eine prozentuale Ranking -Methode (vergleichender Rang), die für Zeilen innerhalb einer Partition oder eines Ergebnissammlung berechnet wird. Diese Methode gibt eine Liste von einer Wertschira von Null auf 1 zurück.

Beispiel 01: Einfach prozentual_rank ()

Mit der Tabelle „Mitarbeiter“ haben wir uns mit dem Beispiel der einfachen prozentualen Methode prozentual_rank () angesehen. Wir haben unten eine bestimmte Abfrage dafür. Die Per_Rank -Spalte wurde von der prozentualen Methode prozentu. Wir haben die Daten gemäß der Sortierreihenfolge der Spalte „Alter“ abgeholt und dann die Werte aus dieser Tabelle eingereicht. Das Abfrageergebnis für dieses Beispiel gab uns einen prozentualen Ranking für die im Bild unten dargestellten Werte.

>> select *, prozent_rank () über (bestellen nach Alter) per_rank aus Daten.Mitarbeiter;

Beispiel 02: Prozent_Rank () Verwenden der Partition

Nach dem einfachen Beispiel von prozentual_rank () ist es jetzt die Wende für die Klausel „Partition by“. Wir haben dieselbe Tabelle "Mitarbeiter" verwendet. Lassen Sie uns einen weiteren Blick auf eine andere Instanz geben, die das Ergebnis in Abschnitte aufteilt. Aus der folgenden Syntax wird die resultierende Mauer durch die Partition nach Expression durch die aus der Deklaration erstattet sowie die prozentuale Methode prozentual_rank () verwendet, um jede Zeilenreihenfolge nach der Spalte „Name“ zu bewerten. In dem unten angezeigten Bild sehen Sie, dass der Ergebnissatz nur 0 und 1 Werte enthält.

>> select *, prozent_rank () over (Partition nach Gehaltsauftrag per Name) per_rank aus Daten.Mitarbeiter;

Abschluss:

Schließlich haben wir alle drei Ranking-Funktionen für Zeilen über die in MySQL verwendete MySQL-Befehlszeilen-Client-Shell erfüllt. Außerdem haben wir sowohl die einfache als auch die Aufteilung durch Klausel in unserer Studie berücksichtigt.