ROW_NUMBER (Deutsch)
Syntax
Beschreibung der Abbildung row_number.gif
Informationen zu Syntax, Semantik und Einschränkungen finden Sie unter:
„Analysefunktionen“
Zweck
ROW_NUMBER
ist eine Analysefunktion. Es weist jeder Zeile, auf die es angewendet wird (entweder jeder Zeile in der Partition oder jeder von der Abfrage zurückgegebenen Zeile), eine eindeutige Nummer in der geordneten Reihenfolge von Zeilen zu, die in order_by_clause
angegeben ist , beginnend mit 1.
Durch Verschachteln einer Unterabfrage mit ROW_NUMBER
in einer Abfrage, die die ROW_NUMBER
-Werte für a abruft Im angegebenen Bereich finden Sie eine genaue Teilmenge der Zeilen aus den Ergebnissen der inneren Abfrage. Mit dieser Funktion können Sie Top-N-, Bottom-N- und Inner-N-Berichte implementieren. Für konsistente Ergebnisse muss die Abfrage eine deterministische Sortierreihenfolge sicherstellen.
Sie können ROW_NUMBER
oder eine andere Analysefunktion für expr
. Das heißt, Sie können keine Analysefunktionen verschachteln, aber Sie können andere integrierte Funktionsausdrücke für expr
verwenden. Informationen zu gültigen Formularen von expr
finden Sie unter „Informationen zu SQL-Ausdrücken“.
Beispiele
Für jede Abteilung in der Beispieltabelle oe.employees
Im folgenden Beispiel werden jeder Zeile Nummern in der Reihenfolge des Einstellungsdatums des Mitarbeiters zugewiesen:
ROW_NUMBER
ist a Nicht deterministische Funktion. employee_id
ist jedoch ein eindeutiger Schlüssel, sodass die Ergebnisse dieser Anwendung der Funktion deterministisch sind.
Siehe auch:
FIRST_VALUE und LAST_VALUE für Beispiele für nicht deterministisches Verhalten
Die folgende Abfrage mit innerem N wählt alle Zeilen aus der Tabelle employees
aus, gibt jedoch nur die einundfünfzigsten bis eins zurück Hundertste Zeile:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;