Einführung in die Verwendung der vier wichtigsten SQL-Rankingfunktionen ROW_NUMBER, RANK, DENSE_RANK, NTILE

Einführung in die Verwendung der vier wichtigsten SQL-Rankingfunktionen ROW_NUMBER, RANK, DENSE_RANK, NTILE

1. ROW_NUMBER()

Definition: Die Funktion ROW_NUMBER() wird verwendet, um die abgefragten Daten nach Auswahl zu sortieren, wobei jedem Datenelement eine Seriennummer hinzugefügt wird. Sie kann nicht verwendet werden, um Schülernoten zu bewerten, und wird im Allgemeinen für Paginierungsabfragen verwendet.
Fragen Sie beispielsweise die ersten 10 Abfragen für 10–100 Studierende ab.

Beispiele:

1.1 Sortierung der Noten

Geben Sie hier die Bildbeschreibung ein

Hier ist die Nummer die Seriennummer jedes Studenten, die in umgekehrter Reihenfolge gemäß studentScore (Punktzahl) absteigt.

1.2 Holen Sie sich die Punkteinformationen des zweiten Schülers

Geben Sie hier die Bildbeschreibung ein

Die hier verwendete Idee ist die Idee der Paging-Abfrage. Fügen Sie außerhalb des ursprünglichen SQL eine weitere Auswahlebene hinzu select where t.number>=1 and t.number<=10 um die Punkteinformationen der ersten zehn Schüler zu erhalten.

2. RANK()

Definition: Die Funktion RANK() ist, wie der Name schon sagt, eine Rangfolgefunktion, die ein bestimmtes Feld bewerten kann. Warum unterscheidet sie sich von ROW_NUMBER()? ROW_NUMBER() dient zum Sortieren. Wenn es Studenten mit den gleichen Punktzahlen gibt, sortiert ROW_NUMBER() sie der Reihe nach und ihre Seriennummern sind unterschiedlich, während Rank() nicht gleich ist und ihre Rangfolge gleich ist. Schauen wir uns das folgende Beispiel an:

2.1 Ranking der Noten

Geben Sie hier die Bildbeschreibung ein

Hier können Sie sehen, wie ROW_NUMBER() und RANK() identisch sind. Da die Noten der Schüler unterschiedlich sind, sind die Rangfolge und Sortierung gleich. Sie werden den Unterschied sehen, wenn Sie es unten ändern.

Geben Sie hier die Bildbeschreibung ein

Bei Punktegleichheit zweier Studierender kommt es zu Änderungen. RANK() ist 1 2 2, während ROW_NUMBER() immer noch 1 2 3 ist. Das ist der Unterschied zwischen RANK() und ROW_NUMBER().

3.DENSE_RANK()

Definition: Die Funktion DENSE_RANK() ist ebenfalls eine Rangfolgefunktion. Sie ähnelt RANK(), da sie ebenfalls Felder ordnet. Was ist also der Unterschied zwischen dieser Funktion und RANK()? Siehe das Beispiel:

Beispiele:

Geben Sie hier die Bildbeschreibung ein

Der Unterschied zwischen DENSE_RANK() und RANK() ist die Kontinuität der Rangfolge. DENSE_RANK() ist kontinuierlich, während RANK() eine springende Rangfolge ist. Daher ist die allgemein verwendete Rangfolgefunktion RANK().

4.NTILE()

Definition: Die Funktion NTILE() verteilt die Zeilen einer geordneten Partition auf eine bestimmte Anzahl von Gruppen. Jede Gruppe wird beginnend bei 1 nummeriert, genau wie das, was wir eine „Partition“ nennen, und in mehrere Zonen unterteilt. Außerdem wird angegeben, wie viele Zonen sich in einer Zone befinden.

Beispiele:

Geben Sie hier die Bildbeschreibung ein

Die Abfrage wurde hier dreimal ausgeführt. Beim ersten Mal wurde sie in eine „Zone“ unterteilt, sodass die Abfrageergebnisnummern alle 1 waren. Beim zweiten Mal wurde sie in zwei Zonen unterteilt, das Abfrageergebnis war 1 1 2, was bedeutet, dass die erste „Zone“ zwei nummerierte Daten hat, 1 1, und die zweite „Zone“ nur die Daten 2 hat.

An diesem Punkt haben wir die Diskussion zum Thema SQL-Ranking abgeschlossen. Nächstes Mal werden wir einige ausführlichere SQL-Ranking-Anweisungen vorstellen.

Dies ist das Ende dieses Artikels über die Verwendung der vier wichtigsten SQL-Rankingfunktionen ROW_NUMBER, RANK, DENSE_RANK und NTILE. Weitere Informationen zur Verwendung der SQL-Rankingfunktionen ROW_NUMBER, RANK, DENSE_RANK und NTILE finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Verwendung der MySQL-Funktionen row_number() und over()
  • Erklärung zur Verwendung von PostgreSQL ROW_NUMBER() OVER()
  • row_number() und unterschiedliche Verwendung in PostgreSQL
  • Unterschiede bei der Verwendung von Postgresql rank() over, dense_rank() und row_number()
  • Implementierungsprozess von row_number in MySQL
  • Detaillierte Beispiele für die allgemeine Verwendung der Funktion row_number in SQL Server
  • Fallstudie zu den SQL ROW_NUMBER()- und OVER()-Methoden

<<:  Schritte zur Implementierung des cuda10.1-Treibers bei der Installation von Ubuntu

>>:  Vue implementiert das Hinzufügen von Wasserzeichen zu hochgeladenen Bildern

Artikel empfehlen

So löschen Sie den gesamten Inhalt eines Verzeichnisses mit Ansible

Studierende, die Ansible verwenden, wissen, dass ...

Tomcat analysiert XML und erstellt Objekte durch Reflektion

Der folgende Beispielcode stellt die Prinzipien d...

MySQL8.0.18-Konfiguration mehrerer Master und eines Slaves

Inhaltsverzeichnis 1. Realistischer Hintergrund 2...

js implementiert ein einfaches Englisch-Chinesisch-Wörterbuch

In diesem Artikel wird der spezifische Code von j...

Zwei Möglichkeiten, den 30-Sekunden-Werbecode aus dem Youku-Video zu entfernen

Ich glaube, jeder kennt dieses Gefühl: Ein Video m...

Tutorial zur manuellen Installation und Konfiguration von mysql8.0.11 winx64

Lassen Sie mich zunächst über meinen Alltag sprec...

Eine kurze Analyse der Verwendung von HTML-Float

Einige Verwendungen von Float Linke Aufhängung: f...

10 Best Practices zum Erstellen und Warten großer Vue.js-Projekte

Inhaltsverzeichnis 1. Nutzen Sie Slots, um Kompon...