SQL ROW_NUMBER (Deutsch)

Zusammenfassung: In diesem Lernprogramm erfahren Sie, wie Sie mit der ROW_NUMBER() jeder Zeile eine fortlaufende Nummer zuweisen in einer Abfrageergebnismenge.

SQL ROW_NUMBER () – Funktionsübersicht

Die ROW_NUMBER() ist eine Fensterfunktion, der eine fortlaufende Ganzzahl zugewiesen wird jede Zeile in der Ergebnismenge der Abfrage.

Im Folgenden wird die Syntax der Funktion ROW_NUMBER() veranschaulicht:

In dieser Syntax

  • teilt die Klausel PARTITION BY zunächst die von der FROM -Klausel in Partitionen. Die Klausel PARTITION BY ist optional. Wenn Sie es weglassen, wird die gesamte Ergebnismenge als einzelne Partition behandelt.
  • Anschließend sortiert die Klausel ORDER BY die Zeilen in jeder Partition. Da die ROW_NUMBER() eine auftragsabhängige Funktion ist, ist die ORDER BY -Klausel erforderlich.
  • Schließlich jede Zeile in jeder Der Partition wird eine fortlaufende Ganzzahl zugewiesen, die als Zeilennummer bezeichnet wird. Die Zeilennummer wird zurückgesetzt, wenn die Partitionsgrenze überschritten wird.

Beispiele für SQL ROW_NUMBER ()

Wir verwenden die employees und departments Tabellen aus der Beispieldatenbank für die Demonstration:

A) Einfaches SQL-Beispiel ROW_NUMBER ()

Die folgende Anweisung ermittelt den Vor- und Nachnamen sowie das Gehalt aller Mitarbeiter. Darüber hinaus wird die Funktion ROW_NUMBER() verwendet, um jeder Zeile eine fortlaufende Ganzzahl hinzuzufügen.

Das folgende Bild zeigt die Teilergebnismenge:

B. ) Verwenden von SQL ROW_NUMBER () für die Paginierung

Die Funktion ROW_NUMBER() kann für die Paginierung verwendet werden. Wenn Sie beispielsweise alle Mitarbeiter in einer Tabelle in einer Anwendung nach Seiten anzeigen möchten, wobei jede Seite zehn Datensätze enthält.

  • Verwenden Sie zunächst die ROW_NUMBER() Funktion, um jeder Zeile eine fortlaufende Ganzzahl zuzuweisen.
  • Zweitens filtern Sie die Zeilen nach der angeforderten Seite. Auf der ersten Seite beginnen beispielsweise die Zeilen von eins bis 9, und auf der zweiten Seite beginnen die Zeilen von 11 bis 20 usw.

Die folgende Anweisung gibt die Datensätze von zurück Auf der zweiten Seite hat jede Seite zehn Datensätze.

Das Folgende zeigt die Ausgabe:

Wenn Sie den allgemeinen Tabellenausdruck (CTE) anstelle der Unterabfrage verwenden möchten, lautet die folgende Abfrage:

C) Verwenden von SQL ROW_NUMBER () zum Ermitteln des n-ten höchsten Werts pro Gruppe

Das folgende Beispiel zeigt, wie Sie die Mitarbeiter finden, die in ihren Abteilungen das höchste Gehalt haben:

In der Unterabfrage:

  • Erstens verteilt die Klausel PARTITION BY die Mitarbeiter nach Abteilungen.
  • Zweitens die Klausel ORDER BY Klausel sortiert den Mitarbeiter in jeder Abteilung nach Gehalt in absteigender Reihenfolge.
  • Drittens weist die ROW_NUMBER() jeder Zeile eine fortlaufende Ganzzahl zu . Die Nummer wird zurückgesetzt, wenn sich die Abteilung ändert.

Im Folgenden wird die Ergebnismenge der Unterabfrage angezeigt:

In der äußeren Abfrage haben wir nur die Mitarbeiterzeilen ausgewählt, die die row_num mit haben der Wert 1.

Hier ist die Ausgabe der gesamten Abfrage:

Wenn Sie das Prädikat in der WHERE -Klausel von 1 auf 2, 3 usw. ändern, erhalten Sie die Mitarbeiter, die Sie haben das zweithöchste Gehalt, das dritthöchste Gehalt usw.

In diesem Lernprogramm haben Sie gelernt, wie Sie mit der SQL-Funktion ROW_NUMBER() eine Sequenz zuweisen Ganzzahl für jede Zeile in der Ergebnismenge einer Abfrage.

  • War dieses Tutorial hilfreich?
  • JaNein

Write a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.