Heim > Datenbank > Oracle > Hauptteil

Eine kurze Diskussion von row_number(), rank() und dense_rank() in Oracle

青灯夜游
Freigeben: 2020-05-13 15:03:08
nach vorne
2521 Leute haben es durchsucht

Im folgenden Artikel erfahren Sie mehr über row_number(), rank() und dense_rank() in Oracle. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion von row_number(), rank() und dense_rank() in Oracle

Oracle: row_number(), rank(), dense_rank()

Syntax: ROW_NUMBER( ) OVER();

row_number ist sehr vielseitig. Es wird am besten zum Sortieren verwendet. Es generiert eine fortlaufende Nummer für jede abgefragte Zeile und sortiert sie der Reihe nach Hinweis: Wenn Sie die Funktion row_number verwenden, müssen Sie die over-Klausel verwenden, um eine zu sortierende Spalte auszuwählen, um eine Sequenznummer zu generieren. Die Funktion

rank wird verwendet, um die Rangfolge jeder Zeile innerhalb der Partition des Ergebnissatzes zurückzugeben. Die Rangfolge einer Zeile ist die Anzahl der vorherigen Rangfolgen der relevanten Zeile plus eins. Einfach ausgedrückt ordnet die Rangfunktion die abgefragten Datensätze ein. Anders als die Funktion row_number berücksichtigt die Rangfunktion die Situation, dass die Sortierfeldwerte in der Over-Klausel gleich sind, wenn die Rangfunktion zum Generieren verwendet wird eine Seriennummer, das Sortierfeld in der Over-Klausel. Seriennummern mit unterschiedlichen Feldwerten werden im Folgenden mit derselben Rangfolgenummer übersprungen, d. h. mit der Rangfolgenummer davor Die entsprechende Zeile plus eins kann als Generierung einer Sequenznummer basierend auf der aktuellen Anzahl von Datensätzen verstanden werden. Die Funktionen der Funktion

dense_rank ähneln der Funktion „dense_rank“. Die Funktion „dense_rank“ ist bei der Generierung von Seriennummern kontinuierlich, während die von der Funktion „rank“ generierten Seriennummern diskontinuierlich sein können. Wenn in der Funktion „dense_rank“ derselbe Rang erscheint, wird die gleiche Rangnummer nicht übersprungen und der Rangwert folgt dem vorherigen Rangwert. Innerhalb jeder Gruppe handelt es sich bei rank() um eine Sprungsortierung. Bei zwei ersten Stellen folgt die dritte Stelle.

Über Partition by: Das Schlüsselwort „Partition by“ ist Teil der Analysefunktion in Oracle und wird zum Partitionieren der Ergebnismenge verwendet. Der Unterschied zur Aggregatfunktion „Gruppieren nach“ besteht darin, dass sie nur die Originaldaten in eine Rangfolge bringt und mehrere Datensätze in einer Gruppe zurückgeben kann (die Anzahl der Datensätze bleibt unverändert), während „Gruppieren nach“ Statistiken zu den Originaldaten aggregiert und im Allgemeinen nur eine Antwort hat Ergebnisse statistischer Werte (einer pro Gruppe zurückgegeben).

TIPPS:

Bei Verwendung von rank over() ist der Nullwert der größte. Wenn das Sortierfeld null ist, kann dies dazu führen, dass das Nullfeld eingestuft wird Erstens, was sich auf die Sortierergebnisse auswirkt.

Es kann so sein: Rang über (Aufteilung nach Kurs, Reihenfolge nach Punktzahl, Abstieg, Nullen zuletzt)

Zusammenfassung:

Sie müssen aufpassen bei Verwendung der Ranking-Funktion Die folgenden drei Punkte:

1. Die Ranking-Funktion muss eine OVER-Klausel haben.

2. Die Ranking-Funktion muss eine OVER-Klausel haben, die ORDER BY enthält.

3. Die Sortierung innerhalb der Gruppe beginnt bei 1.

Empfohlenes Tutorial: „Oracle Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion von row_number(), rank() und dense_rank() in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!