Heim > Datenbank > MySQL-Tutorial > Was sind die Unterschiede zwischen den Oracle-Funktionen RANK() und DENSE_RANK() und wie gehen sie mit Nullwerten um?

Was sind die Unterschiede zwischen den Oracle-Funktionen RANK() und DENSE_RANK() und wie gehen sie mit Nullwerten um?

Patricia Arquette
Freigeben: 2025-01-24 23:56:08
Original
935 Leute haben es durchsucht

What are the differences between Oracle's RANK() and DENSE_RANK() functions, and how do they handle null values?

in -Tepth -Diskussion über Oracle's Rank () und dense_rank () Funktionen

Im Bereich der Datenanalyse und Sortierung bietet Oracle zwei sehr unterschiedliche Funktionen: Rank () und dense_rank (), die jeweils spezifische Verwendungszwecke haben. In diesem Artikel werden die subtilen Unterschiede zwischen diesen beiden Funktionen und deren Anwendungsszenarien untersucht.

rank () und dense_rank () vergleiche

Die Funktion rank () wird als Zeile der Zeile gemäß der angegebenen Reihenfolge zugewiesen, während die Funktion dense_rank () kontinuierliche Ebenen zuteilt. Betrachten Sie beispielsweise die folgende Szene:

In diesem Beispiel zugewiesen das Gehalt von RRR und NNN, obwohl die Funktion rank () die gleiche Ebene (2) für sie zuweist, und die Funktion dense_rank () verteilt kontinuierliche Ebenen, um sicherzustellen, dass es kein Niveau von gibt Überspringen
<code class="language-sql">SELECT empname, sal, RANK() OVER (ORDER BY sal) AS r, DENSE_RANK() OVER (ORDER BY sal) AS dr
FROM emptbl;</code>
Nach dem Login kopieren
Empname Sal r dr
rrr 10000 2 2
nnn 20000 3 3
mmm 5000 1 1
kkk 30000 4 4
fff 40000 5 5
ddd 40000 5 5
bbb 50000 7 6
ccc 50000 7 6
Finden Sie das N -Gehalt

Um das N -Gehalt in der Tabelle zu finden (z. B. das dritte hohe Gehalt), können Sie die folgenden Anfragen verwenden:

Die leere Wertverarbeitung

Das Verhalten von
<code class="language-sql">SELECT sal FROM emptbl ORDER BY sal DESC LIMIT n-1, 1;</code>
Nach dem Login kopieren
rank () und dense_rank () hängt davon ab, ob die zusten oder Nulls zuletzt in der Reihenfolge nach Klausel angegeben sind. Betrachten Sie beispielsweise die folgenden Tabellen, die Luftwertgehalt enthalten:

In diesem Fall wird angenommen, dass der leere Wert das Mindestpegel (Nulls zuerst) aufweist, was zu unterschiedlichen Niveaus im Vergleich zum höchsten Niveau führt (Nulls zuletzt).

Schlussfolgerung
<code class="language-sql">SELECT empname, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) AS r, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) AS dr1
FROM emptbl;</code>
Nach dem Login kopieren
Empname Sal r dr1
fff 40000 1 1
ddd 40000 1 1
rrr 10000 3 2
xxx NULL 2 3
Die Funktionen von

Oracle () und Dense_Rank () bieten zwei verschiedene Datensortierungsmethoden. Verstehen Sie ihre Unterschiede und ihre angemessene Verwendung und können Datenanalyse- und Betriebsaufgaben effektiv ausführen.

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen den Oracle-Funktionen RANK() und DENSE_RANK() und wie gehen sie mit Nullwerten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage