So verwenden Sie die SQL Server -Zeilennummer

So verwenden Sie die SQL Server -Zeilennummer
In den meisten Fällen springen wir, wenn wir Elemente in einer Datenbank nummerieren müssen, zur Identitätseigenschaft. Was passiert jedoch, wenn Sie die Zeilen eines Ergebnisses nummerieren müssen? Hier kommt die Zeilennummernfunktion ins Spiel.

Mit der Funktionsnummer -Funktion können Sie jeder Zeile aufgrund einer SQL -Abfrage eine sequentielle Nummer zuweisen.

Die Funktion row_number () ist Teil der SQL -Serverfensterfunktionen. Mit dieser Funktion können Sie jeder Zeile in jedem Partitionssatz eines Ergebniss eine progressive Ganzzahl zuweisen. Jede Zahl beginnt bei 1 und zurückgesetzt für die Zeilen in jeder Partition.

Funktionssyntax und Rückgabewert

Die Syntax der Funktion ist wie gezeigt:

ZEILENNUMMER ()
Über (Partition von partition_expression
Bestellung nach Order_by_expression
);

Lassen Sie uns die obige Syntax aufschlüsseln.

  1. Partition von - Die Partition nach Klausel ermöglicht es Ihnen, Ihr Ergebnis in verschiedene logische Partitionen aufzuteilen. Die Funktion row_number wird dann auf jede Partition angewendet. Die Partition nach Parameter ist optional, und wenn nicht angegeben, behandelt die Funktion row_number die resultierende Menge als einzige Partition.
  2. Mit der Bestellung nach Klausel können Sie die Sortierreihenfolge für die Zeilen in jedem Partitionssatz haben. Im Gegensatz zur Partition nach Klausel erfordert die Funktion row_number diese Klausel als ordnungsempfindliche Funktion.

Die Funktion kehrt zurück, indem die Zeilen in jeder Partition eine sequentielle Nummer zugewiesen werden. Wie bereits erwähnt, setzt die Funktion die Zeilennummer für jede neue Partition zurück.

SQL Server row_number (): Beispiele

Lassen Sie uns ein Beispiel verwenden, um besser zu verstehen, wie die Funktion row_number () verwendet wird. Erstellen Sie zunächst eine Beispieldatenbank mit Dummy -Daten, wie in den folgenden Abfragen gezeigt:

Datenbank erstellen dummy_db;
Verwenden Sie Dummy_DB;
Tabelle erstellen Dummy_table (
ID int nicht Null -Identität (1,1) Primärschlüssel,
FirstName Varchar (50),
Lastname Varchar (50),
E -Mail Varchar (100),
Gehaltsgeld,
Abteilungsvarchar (50)
);
In Dummy_Table einfügen (FirstName, LastName, E -Mail, Gehalt, Abteilung)
Werte ('Karen', 'Colmen', [email protected] ', $ 149000,' Spieleentwicklung '),
('Alex', 'Bell', '[email protected] ', $ 150000,' Grafikentwicklung '),
('Charles', 'Johnson', [email protected] ', $ 120500,' DevOps Development '),
('Bruce', 'Greer', [email protected] ', $ 118000,' Sicherheitsentwicklung '),
('Sarah', 'Austin', '[email protected] ', $ 165000,' Game Development '),
('Diana', 'Kim', '[email protected] ', $ 105000,' Front-End-Entwicklung '),
('Peter', 'Cogh', '[email protected] ', $ 100000,' Grafikentwicklung '),
('David', 'Hugh', [email protected] ', $ 126000,' Datenbankentwicklung '),
('Tobias', 'Newne', '[email protected] ', $ 115500,' Datenbankentwicklung '),
('Winnie', 'Lorentz', '[email protected] ', $ 175000, "Grafikentwicklung"),
('Guy', 'Miche', '[email protected] ', $ 145000,' Game Development ');
Wählen Sie * aus Dummy_table;

Die obige Abfrage sollte wie gezeigt einen resultierenden Satz zurückgeben:

Beispiel 1

Die folgende SQL -Anweisung verwendet die Funktion row_number, um den Zeilen im resultierenden Satz eine sequentielle Nummer zuzuweisen:

Wählen Sie row_number () über (
Bestellen nach Gehalt) als row_num,
Vorname,
Familienname, Nachname,
Abteilung
Von dummy_table;

Die obige Abfrage sollte wie unten gezeigt ein Ergebnissatz zurückgeben:

Beispiel 2

Wir können die Funktion row_number verwenden, um den Mitarbeiter mit dem höchsten Gehalt in einer bestimmten Abteilung zu lokalisieren.

Betrachten Sie die unten angegebene Beispielabfrage:

Wählen Sie FirstName, LastName, Gehalt, Abteilung, row_number () over (Partition nach Abteilungsbefehl nach Gehalt des Gehalts) als row_num von dummy_table;

Die obige Abfrage unterteilt die Daten in logische Partitionen basierend auf der Abteilung. Anschließend wenden wir die Funktion row_number () auf die Bestellung durch das Gehalt in absteigender Reihenfolge an.

Beispiel 3

Sie können die Funktion row_number für die Pagination verwenden. Da die Funktion row_number allen Zeilen eine sequentielle Nummer zuweist, können wir sie verwenden, um eine bestimmte Anzahl von Ergebnissen pro Seite zu filtern.

Nehmen Sie das folgende Beispiel:

WÄHLEN AUS
(Wählen Sie row_number ()
Over (Bestellung nach Gehalt) als Row_num, FirstName, LastName, Abteilung
Von dummy_table) dt
Wobei row_num> = 1 und row_num <= 5;

Die obige Abfrage sollte eine Ausgabe als:

Abschluss

In diesem Handbuch haben wir besprochen, wie die Funktion SQL Server row_number () verwendet wird, um den Zeilen in einem Ergebnissatz sequentielle Zahlen zuzuweisen. Außerdem haben wir die Funktionssyntax und den Rückgabewert überprüft. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Linux -Hinweisartikel für Tipps und Tutorials finden Sie in Bezug auf Linux -Hinweise.