Oracle Rank -Funktion

Oracle Rank -Funktion

In diesem Beitrag begegnen Sie die Funktion rank () in Oracle -Datenbanken, mit der Sie den Rang einer Zeile aus einem bestimmten Satz von Zeilen ermitteln können.

Oracle Rank -Funktion

Mit der Funktion rank () in Oracle können wir jeder Zeile in einem Ergebnissatz einen Rang zuweisen. Die Funktion weist allen Zeilen den gleichen Rang mit ähnlichen Werten zu und fügt der nächsten Zeile im Rang eine Zahl hinzu.

Wir können die Syntax für die Funktion ausdrücken, wie im Folgenden gezeigt:

Rank () über (
[query_partition_clause]
Bestellung durch Sort_expression [ASC | Desc] [nulls First | ZULETZT]
);

Die Funktion unterstützt die folgenden Parameter:

  1. query_partition_clause - Es handelt sich um eine optionale Klausel, die die Bedingung für die Aufteilung der Zeilen im Abfrageergebnis in verschiedene Gruppen oder Partitionen definiert. Die Funktion rank () wird dann einzeln auf die resultierenden Partitionen angewendet.
  2. sort_expression - Dieser Parameter legt die Spalte oder den Ausdruck fest, die verwendet wird, um das Ranking der Zeilen zu bestimmen. Die resultierenden Zeilen werden in aufsteigender oder absteigender Reihenfolge gemäß den Keywords ASC und Desc eingestuft. Die Standardsortierreihenfolge ist auf Ascending festgelegt.
  3. Schließlich bestimmt das Schlüsselwort NULLS, wie die Funktion alle Nullwerte behandelt, wenn sie die Zeilen einstellen. Zu den akzeptierten Parametern gehören:
    • Die ersten und letzten Schlüsselwörter, die angeben, ob die Nullwerte zuerst oder zuletzt eingestuft werden sollten. Standardmäßig sortiert die Funktion zuerst die Nullwerte.

Oracle Rank () Funktionsbeispiele

Um zu veranschaulichen, wie die Funktion rank () in Oracle verwendet wird, werden wir die Tabellenversammlung der Mitarbeiter verwenden.

Betrachten Sie die folgende Tabelle:

Wählen Sie First_Name, last_name, Gehalt, job_id aus Mitarbeitern EMP;

Ergebnis:

Beispiel 1: Verwenden der Rangfunktion, um den Rang zu bestimmen

Dieses Beispiel zeigt die Verwendung der Funktion rank () bei der Bestimmung des Ranges jedes Mitarbeiters in der Tabelle.

Wählen Sie First_Name, last_name, Gehalt, Job_id, Rank () über (Reihenfolge nach Gehalt ASC) als Rang aus
von Mitarbeitern EMP;

In der angegebenen Abfrage verwenden wir die Rangfunktion, um jeder Zeile in der Tabelle der Mitarbeiter ein Ranking zuzuweisen, basierend auf den Werten in der Gehaltsspalte.

Die Funktion verwendet die Klausel "Order by", um die Reihenfolge anzugeben, in der die Zeilen eingestuft werden. In unserem Beispiel verwenden wir die aufsteigende Reihenfolge basierend auf dem Wert der Gehaltsspalte.

Die Funktion weist dann die Zeile mit dem niedrigsten Gehalt einen Rang von 1 und dem höchsten Gehaltsrang von n zu, wobei n die Anzahl der Zeilen in der Tabelle darstellt.

Wie Sie vielleicht bemerken, werden den Zeilen mit ähnlichen Gehaltswerten den gleichen Rang zugewiesen.

Beispiel 2: Verwenden der Rangfunktion mit Reihenfolge nach Klausel

Angenommen, wir möchten die Zeilen basierend auf dem Job_ID gruppieren und dann den Zeilen in jeder Partition einen Rang zuweisen.

Wir können eine Abfrage ausführen, wie im Folgenden gezeigt:

Wählen Sie First_Name, last_name, Gehalt, Job_id, Rank () Over (
Partition von Job_id
Bestellung durch Gehalts ASC
) Als Rang
Von Mitarbeitern EMP;

Die Partition nach Klausel unterteilt die Zeilen aus der Tabelle des Mitarbeiters in die verschiedenen Gruppen basierend auf der Spalte job_id.

Die Rangfunktion weist dann jeder Zeile in jeder Partition ein Ranking zu, wobei das niedrigste Gehalt in jeder Partition einen Rang von 1 und das höchste Gehalt in jeder Partition erhält, die einen Rang von n erhält (wobei n die Anzahl der Reihen in der Partition ist).

Ergebnis:

Abschluss

In diesem Tutorial haben Sie gelernt, wie man die Funktion von Oracle Rank () verwendet. Obwohl die Funktion rank () vorteilhaft sein kann, kann sie zu einem Leistungsverlust führen, insbesondere bei der Arbeit mit komplexen Abfragen und großen Datensätzen.