MySQL MariaDB

MySQL RANK-Fensterfunktion

MySQL RANK-Fensterfunktion
Die Methode Ranking weist jeder Zeile einen Rang innerhalb der Partition eines Ergebnisses einer Menge zu. Der Rang einer Reihe wird bestimmt, indem eine Rangzahl aus der vorhergehenden Reihe erhöht wird. MySQL verwendet eine Rangordnungsfunktion, die einen Rang pro Zeile in einer Schemapartition unterstützt. In MySQL sind die Bewertungsmethoden tatsächlich ein Teil der Fenstermethode. Sie verwenden die Bewertungsmethoden in MySQL mit den folgenden Klauseln:

Insgesamt gibt es drei Arten von Ranking-Funktionen:

MySQL-RANG():

Dies ist eine Methode, die einen Rang innerhalb einer Partition oder eines Ergebnisarrays angibt mit Lücken pro Zeile. Chronologisch wird die Rangfolge der Zeilen nicht immer zugewiesen (i.e., um eins gegenüber der vorherigen Zeile erhöht). Selbst wenn mehrere Werte gleich sind, wendet das Dienstprogramm rank() zu diesem Zeitpunkt dieselbe Rangfolge an. Außerdem kann sein vorheriger Rang plus eine Zahl wiederholter Zahlen die nachfolgende Rangnummer sein.

Um das Ranking zu verstehen, öffnen Sie die Befehlszeilen-Client-Shell und geben Sie Ihr MySQL-Passwort ein, um es zu verwenden.

Angenommen, wir haben eine untenstehende Tabelle mit dem Namen „same“ in einer Datenbank „data“ mit einigen Datensätzen.

>> AUSWÄHLEN * AUS Daten.gleich;

Beispiel 01: Einfacher RANK()

Unten haben wir die Rank-Funktion innerhalb des SELECT-Befehls verwendet. Diese Abfrage wählt die Spalte "id" aus der Tabelle "same" aus und ordnet sie nach der Spalte "id". Wie Sie sehen, haben wir der Ranking-Spalte einen Namen gegeben, der "my_rank" ist. Das Ranking wird nun in dieser Spalte gespeichert, wie unten gezeigt.

>> SELECT id, RANK() OVER( ORDER BY id ) my_rank FROM fata.gleich;

Beispiel 02: RANK() mit PARTITION

Angenommen eine andere Tabelle „Mitarbeiter“ in einer Datenbank „Daten“ mit den folgenden Datensätzen. Lassen Sie uns eine andere Instanz haben, die die Ergebnismenge in Segmente aufteilt.

>> AUSWÄHLEN * AUS Daten.Mitarbeiter;

Um die Methode RANK() zu verwenden, weist die nachfolgende Anweisung den Rang jeder Zeile zu und teilt die Ergebnismenge unter Verwendung von "Alter" in Partitionen auf und sortiert sie nach "Gehalt". Diese Abfrage hat alle Datensätze abgerufen, während sie in einer Spalte "new_rank" eingestuft wurde. Sie können die Ausgabe dieser Abfrage unten sehen. Es hat die Tabelle nach „Gehalt“ sortiert und nach „Alter“ unterteilt.

>> AUSWÄHLEN *, RANK() OVER(PARTITION BY Alter ORDER BY Gehalt) new_rank FROM data.Mitarbeiter;

MySQL DENSE_Rank():

Dies ist eine Funktion, bei der, ohne Löcher, bestimmt einen Rang für jede Zeile innerhalb einer Division oder Ergebnismenge. Die Reihenfolge der Zeilen wird am häufigsten in sequentieller Reihenfolge vergeben. Manchmal haben Sie einen Zusammenhang zwischen Werten, und daher wird er dem genauen Rang durch den dichten Rang zugewiesen, und sein nachfolgender Rang ist die nächste folgende Zahl.

Beispiel 01: Einfach DENSE_RANK()

Angenommen, wir haben eine Tabelle „Mitarbeiter“ und Sie müssen die Tabellenspalten „Name“ und „Gehalt“ nach der Spalte „Name“ ordnen. Wir haben eine neue Spalte „dens_Rank“ erstellt, um die Bewertung der Datensätze darin zu speichern. Bei der Ausführung der folgenden Abfrage haben wir die folgenden Ergebnisse mit unterschiedlichem Ranking zu allen Werten.

>> WÄHLEN Sie Name, Gehalt, DENSE_RANK() OVER( ORDER BY Name ) dens_rank FROM data.Mitarbeiter;

Beispiel 02: DENSE_RANK() mit PARTITION

Sehen wir uns eine weitere Instanz an, die den Ergebnissatz in Segmente aufteilt. Gemäß der folgenden Syntax wird die durch die PARTITION BY-Angabe partitionierte Ergebnismenge von der FROM-Anweisung zurückgegeben, und die Methode DENSE_RANK() wird dann unter Verwendung der Spalte „Name“ auf jeden Abschnitt verschmiert. Dann wird für jedes Segment die ORDER BY-Phrase verwischt, um den Imperativ der Zeilen mithilfe der Spalte „Alter“ zu bestimmen.

>> SELECT Name, Alter, Gehalt, DENSE_RANK() OVER(PARTITION BY Name ORDER BY Alter) new_rank FROM data.Mitarbeiter;

Wenn Sie die obige Abfrage ausführen, sehen Sie, dass wir im Vergleich zur Methode Single dense_rank() im obigen Beispiel ein sehr deutliches Ergebnis haben. Wir haben für jeden Zeilenwert den gleichen wiederholten Wert, wie Sie unten sehen können. Es ist die Verbindung der Rangwerte.

MySQL-PERCENT_RANK():

Es handelt sich in der Tat um eine prozentuale Rangfolge (vergleichender Rang), die für Zeilen innerhalb einer Partition oder Ergebnissammlung berechnet. Diese Methode gibt eine Liste von entweder einer Werteskala von Null bis 1 zurück.

Beispiel 01: Einfacher PERCENT_RANK()

Anhand der Tabelle „Mitarbeiter“ haben wir uns das Beispiel der einfachen Methode PERCENT_RANK() angesehen. Wir haben eine unten angegebene Abfrage dafür. Die Spalte per_rank wurde von der Methode PERCENT_Rank() generiert, um die Ergebnismenge in Prozentform zu ordnen. Wir haben die Daten nach der Sortierreihenfolge der Spalte „Alter“ abgerufen und dann die Werte aus dieser Tabelle geordnet. Das Abfrageergebnis für dieses Beispiel hat uns eine prozentuale Rangfolge für die Werte gegeben, wie in der Abbildung unten dargestellt.

>> AUSWÄHLEN *, PERCENT_RANK() OVER( ORDER BY Alter ) per_rank FROM data.Mitarbeiter;

Beispiel 02: PERCENT_RANK() mit PARTITION

Nach dem einfachen Beispiel von PERCENT_RANK() ist jetzt die „PARTITION BY“-Klausel an der Reihe. Wir haben die gleiche Tabelle „Mitarbeiter“ verwendet. Werfen wir noch einen Blick auf eine andere Instanz, die die Ergebnismenge in Abschnitte aufteilt. Aus der folgenden Syntax ergibt sich, dass die durch den PARTITION BY-Ausdruck resultierende Set-Wall-Off durch die FROM-Deklaration zurückerstattet wird, und die PERCENT_RANK()-Methode wird dann verwendet, um jede Zeilenreihenfolge nach der Spalte „Name“ zu ordnen. In der unten angezeigten Abbildung sehen Sie, dass die Ergebnismenge nur 0- und 1-Werte enthält.

>> AUSWÄHLEN *, PERCENT_RANK() OVER(PARTITION BY Gehalt ORDER BY Name) per_rank FROM data.Mitarbeiter;

Fazit:

Schließlich haben wir alle drei Ranking-Funktionen für Zeilen, die in MySQL verwendet werden, über die MySQL-Befehlszeilen-Client-Shell ausgeführt. Außerdem haben wir in unserer Studie sowohl die einfache als auch die PARTITION BY-Klausel berücksichtigt.

So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...
Beste Spiele zum Spielen mit Handtracking
Oculus Quest hat kürzlich die großartige Idee des Hand-Trackings ohne Controller vorgestellt. Mit einer ständig steigenden Anzahl von Spielen und Akti...
So zeigen Sie OSD-Overlay in Vollbild-Linux-Apps und -Spielen an
Das Spielen von Spielen im Vollbildmodus oder die Verwendung von Apps im ablenkungsfreien Vollbildmodus kann Sie von relevanten Systeminformationen ab...