SQL DENSE_RANK()-Funktion

Sql Dense Rank Funktion



Fensterfunktionen sind ein entscheidendes Merkmal in SQL und spielen eine grundlegende Rolle bei komplexen Datenberechnungen und Operationen in SQL-Datenbanken. Eine der Funktionen in den SQL-Fensterfunktionen ist dense_rank().

Mit der Funktion DENSE_RANK() können wir jeder Zeile innerhalb einer Ergebnismenge basierend auf den Werten in einer weiteren angegebenen Spalte einen eindeutigen Rang zuweisen. Sie ist der Funktion rank() sehr ähnlich, weist jedoch geringfügige Unterschiede in der Art und Weise auf, wie die Funktion mit den doppelten Datensätzen umgeht.

In diesem Tutorial werden wir untersuchen, wie diese Funktion funktioniert, welche Syntax bereitgestellt wird und wie wir sie in einer Datenbank verwenden können.







Wie es funktioniert

Lassen Sie uns zunächst erklären, wie diese Funktion funktioniert. Es ist gut zu bedenken, dass es sich bei der Funktion um eine High-Level-Funktion handelt und wir die zugrunde liegende Implementierung nicht erklären können.



Die Funktion funktioniert, indem sie jeder Zeile in der Ergebnismenge einen Rang zuweist, beginnend mit Rang 1 und für jeden eindeutigen Wert in den Spalten um 1 erhöht.



Den Zeilen mit ähnlichen Werten (Duplikate) in den angegebenen Spalten wird der gleiche Rang zugewiesen, und der nächsten Zeile mit einem anderen Wert wird der nächste verfügbare Rang ohne Lücken zugewiesen.





Wie bereits erwähnt, hinterlässt die Funktion keine Lücken bei doppelten Werten, was sie von der Funktion rank() unterscheidet.

Eine häufige Verwendung der Funktion „dense_rank()“ ist die Durchführung von Ranking-Operationen. Wir können es beispielsweise verwenden, um die Top-N-Datensätze usw. zu finden.



Funktionssyntax:

Im Folgenden wird die Syntax der Funktion „dense_rank()“ beschrieben:

DENSE_RANK() ÜBER (

[PARTITION BY partition_expression, ...]

BEFEHL BY sort_expression [ASC | BESCHREIBUNG], ...

)

In der angegebenen Syntax:

  1. Wir beginnen mit der Funktion dense_rank() selbst.
  2. Die OVER-Klausel signalisiert den Beginn der Fensterfunktionsspezifikationen. Dies definiert, wie die Rangfolge innerhalb der Ergebnismenge angewendet wird.
  3. Der PARTITION BY-Partitionsausdruck ist eine optionale Klausel, die es uns ermöglicht, die resultierende Menge basierend auf einer oder mehreren Spalten in Gruppen oder Partitionen zu unterteilen. Die Rangfolge wird auf jede Partition separat angewendet, wobei die Rangfolge bei einer neuen Partition zurückgesetzt wird.
  4. Der ORDER BY sort_expression gibt die Reihenfolge an, in der wir die Daten in den resultierenden Partitionen sortieren möchten.

Beispieldaten

Um zu demonstrieren, wie die Funktion „dense_rank()“ verwendet wird, beginnen wir mit einer Tabelle mit Beispieldaten. In unserem Fall verwenden wir eine Beispieltabelle „Bestellungen“ wie folgt:

Beispiel 1: Verwendung der Funktion Dense_Rank()

Wir können die Funktion „dense_rank()“ verwenden, um die resultierenden Bestellungen nach dem Preis zu ordnen. Betrachten Sie die folgende Beispielabfrage:

WÄHLEN

Auftragsnummer,

customer_username,

Produkt_gekauft,

DENSE_RANK() ÜBER (

BEFEHL VON

Preis DISC

) preis_rank

AUS

Befehle o;

Im gegebenen Beispiel verwenden wir die Funktion „dense_rank()“, um die Daten basierend auf dem Preis der Bestellungen zu ordnen. Wir lassen die PARTITION BY-Klausel weg, da wir die Daten nicht gruppieren möchten.

Die resultierende Ausgabe lautet wie folgt:

Beispiel 2: PARTITION BY

Wir können auch die PARTITION BY-Klausel hinzufügen, um die Daten in verschiedene Segmente zu gruppieren, beispielsweise basierend auf dem gekauften Produkt.

Eine Beispielabfrage lautet wie folgt:

WÄHLEN

Auftragsnummer,

customer_username,

Produkt_gekauft,

DENSE_RANK() ÜBER (

Partition nach product_purchased

BEFEHL VON

Preis DISC

) preis_rank

AUS

Befehle o;

Dadurch sollten die Daten auf der Grundlage der resultierenden Gruppen in verschiedene Gruppen gruppiert und der Rang für die Elemente in jeder Gruppe angewendet werden.

Abschluss

In diesem Beitrag haben wir die Grundlagen der Verwendung und Arbeit mit der Fensterfunktion „dense_rank()“ in SQL kennengelernt, um den Werten basierend auf bestimmten Spalten einen Rang zuzuweisen.