Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (A-D)

 

DENSE_RANK-Funktion [Rangfolge]

Berechnet den Rang eines Werts in einer Partition. Im Fall von gebundenen Werten verhindert die DENSE_RANK-Funktion Lücken in der Rangfolge-Sequenz.

Syntax
DENSE_RANK( ) OVER ( Fensterspezifikation )
Fensterspezifikation: Weitere Hinweise finden Sie im folgenden Abschnitt "Bemerkungen".
Rückgabe

INTEGER

Bemerkungen

Elemente von Fensterspezifikation können in der Funktionssyntax (Inline) oder zusammen mit einer WINDOW-Klausel in der SELECT-Anweisung angegeben werden. Wenn sie als eine Fensterfunktion verwendet wird, müssen Sie eine ORDER BY-Klausel angeben und können eine PARTITION BY-Klausel angeben. Allerdings dürfen Sie keine ROWS- oder RANGE-Klausel angeben. Weitere Hinweise finden Sie unter der Fensterspezifikation-Definition unter WINDOW-Klausel.

Weitere Hinweise zur Verwendung von Fensterfunktionen in SELECT-Anweisungen mit Arbeitsbeispielen finden Sie unter Fensterfunktionen.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   SQL/OLAP-Funktion T612.

Beispiel

Das folgende Beispiel gibt eine Ergebnismenge zurück, die die Rangfolge der Gehälter von Mitarbeitern in Utah und New York liefert. Auch wenn 19 Datensätze in der Ergebnismenge zurückgegeben werden, sind nur 18 Ränge angeführt, weil der 7. Rang vom 7. und 8. Mitarbeiter, die beide das gleiche Gehalt erhalten, geteilt wird. Der 9. Mitarbeiter wird nicht an 9., sondern an 8. Stelle aufgereiht, weil die DENSE_RANK-Funktion Lücken in der Rangfolge verhindert.

SELECT DepartmentID, Surname, Salary, State,
DENSE_RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees 
WHERE State IN ('NY','UT');

Die Ergebnismenge sieht folgendermaßen aus:

DepartmentID Surname Salary State SalaryRank
100 Shishov 72.995,000 UT 1
100 Wang 68.400,000 UT 2
100 Cobb 62.000,000 UT 3
400 Morris 61.300,000 UT 4
300 Davidson 57.090,000 NY 5
200 Martel 55.700,000 NY 6
100 Blaikie 54.900,000 NY 7
400 Diaz 54.900,000 UT 7
100 Driscoll 48.023,000 UT 8
400 Hildebrand 45.829,000 UT 9
100 Whitney 45.700,000 NY 10
100 Guevara 42.998,000 NY 11
100 Soo 39.075,000 NY 12
200 Goggin 37.900,000 UT 13
400 Wetherby 35.745,000 NY 14
400 Ahmed 34.992,000 NY 15
500 Rebeiro 34.576,000 UT 16
300 Bigelow 31.200,000 UT 17
500 Lynch 24.903,000 UT 18