logo

SQL Server-Zeilennummer

Die Zeilennummer ist am häufigsten Ranking-Funktion Wird in SQL Server verwendet. Die Funktion ROW_NUMBER() generiert eine fortlaufende Nummer für jede Zeile innerhalb einer Partition in der resultierenden Ausgabe. In jeder Partition beginnt die Nummer der ersten Zeile mit 1. Wir müssen immer das verwenden SORTIEREN NACH -Klausel, um sicherzustellen, dass die Nummern in der richtigen Reihenfolge zugewiesen werden. Die von dieser Funktion zurückgegebenen Werte sind von GROSSE INT Datentyp. Diese Funktion ist in SQL Server 2005 und späteren MS SQL-Versionen enthalten.

Die ROW_NUMBER bestimmt die vorübergehender Wert wenn die Abfrage ausgeführt wird. Wenn Sie die Zahlen in einer Tabelle erhalten möchten, müssen Sie die sehen IDENTITÄT Eigentum und REIHENFOLGE . Wenn die Funktion ROW_NUMBER in SQL Server auf zwei identische Werte in derselben Partition trifft, weist sie ihnen unterschiedliche Rangnummern zu. Die Rangnummer wird durch die Reihenfolge bestimmt, in der sie angezeigt werden.

Es gibt keine Garantie dafür, dass der von dieser Funktion zurückgegebene Wert bei jeder Ausführung gleich geordnet wird, es sei denn, Folgendes trifft zu:

  • Die Werte partitionierter Spalten sind eindeutig
  • Die Werte der ORDER BY-Spalten sind eindeutig
  • Die Kombination der Spalten „Partition“ und „Sortieren nach“ ist einzigartig

Syntax

Im Folgenden finden Sie die Syntax, die die Funktion ROW_NUMBER() veranschaulicht:

Kann eine abstrakte Klasse einen Konstruktor haben?
 ROW_NUMBER() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... ) 

Lassen Sie uns die Syntax der Funktion ROW NUMBER() verstehen:

ÜBER

Es ist wichtig, diese Klausel zu verstehen, die das Fenster oder die Zeilengruppe angibt, die die Fensterfunktion bedient. PARTITION BY und ORDER BY sind die beiden möglichen Klauseln der OVER-Klausel. Der ORDER BY-Ausdruck der OVER-Klausel wird unterstützt, wenn die Zeilen in einer bestimmten Reihenfolge vorliegen müssen, damit die Funktion ausgeführt werden kann.

PARTITIONIEREN NACH

  • Es handelt sich um eine optionale Klausel, die die Ergebnismenge in Partitionen (Zeilengruppen) aufteilt. Dann wird die Funktion ROW NUMBER() auf jede Partition angewendet und weist die Rangnummer jeder Partition separat zu.
  • Wenn wir die Klausel „partition by“ weglassen, behandelt die Funktion ROW_NUMBER das gesamte Ergebnis als eine einzelne Partition und liefert eine Rangfolge von oben nach unten.

SORTIEREN NACH

Mit dieser Klausel können wir die Zeilen der Ergebnismenge innerhalb jeder Partition sortieren. Es handelt sich um eine erforderliche Klausel, da die Funktion ROW_NUMBER() von der Reihenfolge abhängt.

Namenskonvention für Java

Beispiel

Lassen Sie uns anhand eines Beispiels verstehen, wie die Funktion ROW_NUMBER in der SQL Server-Tabelle funktioniert. Zuerst erstellen wir eine Tabelle mit dem Namen „ Personen ' mit der folgenden Anweisung:

binärer Suchbaum]
 CREATE TABLE Persons ( person_name varchar(45) NOT NULL, product varchar(45) DEFAULT NULL, country varchar(25) DEFAULT NULL, price float, years int NOT NULL ); 

Als Nächstes fügen wir mithilfe der folgenden Anweisung einige Datensätze zu dieser Tabelle hinzu:

 INSERT INTO Persons (person_name, product, country, price, years) VALUES ('Steffen', 'Computer', 'USA', 20000.00, 2018), ('Joseph', 'Laptop', 'India', 35000.00, 2016), ('Kevin', 'TV', 'USA', 15000.00, 2016), ('Thompson', 'Mobile', 'France', 12500.00, 2017), ('Donald', 'Laptop', 'England', 30000.00, 2018), ('Joseph', 'Mobile', 'India', 18000.00, 2018), ('Matthew', 'Desktop', 'France', 22000.00, 2017), ('Antonio', 'Mouse', 'England', 1200.00, 2016); 

Überprüfen Sie als Nächstes die Daten mithilfe von WÄHLEN Stellungnahme. Wir erhalten die folgende Ausgabe:

SQL Server-Zeilennummer

1. Einfaches ROW_NUMBER()-Beispiel

Die folgende Aussage Zeigt die Details der Person an und fügt eine fortlaufende Ganzzahl hinzu zu jeder Zeile mithilfe von ROW_NUMBER():

 SELECT *, ROW_NUMBER() OVER (ORDER BY price) AS row_num FROM Persons; 

Hier haben wir die PARTITION BY-Klausel nicht angegeben, damit die Funktion ROW_NUMBER() die gesamte Ergebnismenge als eine einzelne Partition behandelt. Nach Ausführung der Anweisung erhalten wir folgende Ausgabe:

SQL Server-Zeilennummer

2. ROW_NUMBER() über Partitionen Beispiel

Die Funktion ROW NUMBER() wird in diesem Beispiel verwendet und stellt jedem Datensatz innerhalb einer Partition in einer Tabelle eine fortlaufende Nummer bereit. Die Zeilennummer wird immer neu initialisiert, wenn sich das Jahr ändert:

 SELECT person_name, product, price, years, ROW_NUMBER() OVER ( PARTITION BY years ORDER BY price) AS row_num FROM Persons; 

Hier haben wir die PARTITION BY-Klausel verwendet, die die teilt 'Personen' Tabelle in Partitionen basierend auf 'Jahre' Spalte. Nach der Ausführung erhalten wir die folgende Ausgabe:

Auswahlsortierung in Java
SQL Server-Zeilennummer

3. ROW_NUMBER() Beispiel für Paginierung

Wir können auch die Funktion ROW_NUMBER() für die Paginierung verwenden. Zum Beispiel Wenn wir alle Informationen einer Person in einer Anwendung seitenweise abrufen möchten, weisen wir zunächst jeder Zeile mithilfe der Funktion ROW_NUMBER() eine fortlaufende Nummer zu. Zweitens sortieren Sie die Zeilen nach der angeforderten Seite.

Die folgende Aussage erklärt es deutlicher:

 SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) P WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>It will give the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-4.webp" alt="SQL Server Row Number"> <p>If we do not want to use the <strong>subquery</strong> , we can use the <strong>common table expression (CTE)</strong> as below statement:</p> <pre> WITH CTE_Person AS ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) SELECT * FROM CTE_Person WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>In this example, we have first specified the CTE that uses the ROW_NUMBER() function to assign each row in the result set sequentially. Second, the outer query returned the desired result. After execution, we will get the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-5.webp" alt="SQL Server Row Number"> <h3>Conclusion</h3> <p>In this article, we learned how to give a sequential number to each record within a partition of a query using the ROW NUMBER() function in SQL Server.</p> <hr></=></pre></=>