RANK-Funktion Oracle/PLSQL

In diesem Oracle-Lernprogramm wird erläutert, wie Sie die Oracle/PLSQL RANK-Funktion mit Syntax und Beispielen verwenden.

Beschreibung

Die Oracle/PLSQL RANK-Funktion gibt den Rang eines Werts in einer Gruppe von Werten zurück. Es ist der DENSE_RANK-Funktion sehr ähnlich. Die Rangfunktion kann jedoch nicht aufeinander folgende Rangfolgen verursachen, wenn die getesteten Werte gleich sind. Während die DENSE_RANK-Funktion immer zu aufeinanderfolgenden Rankings führt.

Die RANK-Funktion kann auf zwei Arten verwendet werden – als Aggregatfunktion oder als Analytikfunktion.

RANK-Funktion Syntax Nr. 1 – Wird als Aggregatfunktion verwendet

Als Aggregatfunktion gibt die RANK-Funktion den Rang einer Zeile innerhalb einer Gruppe von Zeilen zurück.

Die Syntax für die RANK-Funktion bei Verwendung als Aggregatfunktion lautet:

RANK( expr1 [, expr2, … expr_n ] ) WITHIN GROUP ( ORDER BY expr1 [, expr_2, … expr_n ] )

Parameter oder Argumente

expr1 Erster Ausdruck, der eine eindeutige Zeile in der Gruppe identifiziert.

expr2, … expr_n Wahlweise. Zusätzliche Ausdrücke, die eine eindeutige Zeile in der Gruppe identifizieren.

Notiz

  • Die RANK-Funktion gibt einen numerischen Wert zurück.
  • In der ersten Ausdrucksliste muss dieselbe Anzahl von Ausdrücken vorhanden sein wie in der ORDER BY-Klausel.
  • Die Ausdruckslisten stimmen nach Position überein, sodass die Datentypen zwischen den Ausdrücken in der ersten Ausdrucksliste wie in der ORDER BY-Klausel kompatibel sein müssen.

Gilt für

Die RANK-Funktion kann in folgenden Versionen von Oracle/PLSQL verwendet werden:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Beispiel (als Aggregatfunktion)

Sehen wir uns einige Oracle RANK-Funktionsbeispiele an und untersuchen Sie, wie Sie die RANK-Funktion in Oracle/PLSQL verwenden können.

Beispielsweise:

Die obige SQL-Anweisung würde den Rang eines Mitarbeiters mit einem Gehalt von 1000 € und einem Bonus von 500€ innerhalb der Tabelle employees zurückgeben.

RANK-Funktion Syntax Nr. 2 – Wird als analytische Funktion verwendet

Als Analytic-Funktion gibt die RANK-Funktion den Rang jeder Zeile einer Abfrage mit Bezug auf die anderen Zeilen zurück.

Die Syntax für die RANK-Funktion bei Verwendung als Analytic-Funktion lautet:

rank() OVER ( [ query_partition_clause] ORDER BY clause )

Kehrt zurück

Die RANK-Funktion gibt einen numerischen Wert zurück.

Gilt für

Die RANK-Funktion kann in folgenden Versionen von Oracle/PLSQL verwendet werden:

  • Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Beispiel (als analytische Funktion)

Die obige SQL-Anweisung würde alle Mitarbeiter zurückgeben, die in der Marketingabteilung arbeiten, und dann einen Rang für jedes einzelne Gehalt in der Marketingabteilung berechnen. Wenn zwei Mitarbeiter das gleiche Gehalt hatten, würde die RANK-Funktion für beide Mitarbeiter denselben Rang zurückgeben. Dies führt jedoch zu einer Lücke in den Rängen (dh nicht aufeinanderfolgende Ränge). Dies unterscheidet sich ziemlich von der DENSE_RANK-Funktion, die aufeinanderfolgende Rankings generiert.