Comment utiliser le numéro de ligne SQL Server

Comment utiliser le numéro de ligne SQL Server
Dans la plupart des cas, lorsque nous devons numéroter des éléments dans une base de données, nous passons à la propriété d'identité. Cependant, que se passe-t-il lorsque vous devez numéroter les lignes d'un résultat? C'est là que la fonction de numéro de ligne entre en jeu.

La fonction de numéro de ligne vous permet d'attribuer un numéro séquentiel à chaque ligne à la suite d'une requête SQL.

La fonction row_number () fait partie des fonctions de fenêtre SQL Server. En utilisant cette fonction, vous pouvez attribuer un entier progressif à chaque ligne de chaque ensemble de partition d'un résultat. Chaque numéro commence à 1 et réinitialise pour les lignes dans chaque partition.

Syntaxe de fonction et valeur de retour

La syntaxe de la fonction est comme indiqué:

Row_number ()
Over (partition by partition_expression
Ordre par Order_BY_Expression
));

Laissez-nous décomposer la syntaxe ci-dessus.

  1. Partition par - La clause de partition par vous permet de diviser votre résultat en résultant dans diverses partitions logiques. La fonction ROW_NUMBER est ensuite appliquée à chaque partition. La partition par paramètre est facultative et, si elle n'est pas spécifiée, la fonction Row_number traitera l'ensemble résultant comme une partition unique.
  2. La clause de commande par vous permet l'ordre de tri pour les lignes dans chaque ensemble de partition. Contrairement à la clause Partition by, la fonction ROW_NUMBER exige cette clause comme une fonction sensible à l'ordre.

La fonction renvoie en attribuant un numéro séquentiel aux lignes de chaque partition. Comme mentionné, la fonction réinitialisera le numéro de ligne pour chaque nouvelle partition.

SQL Server Row_number (): Exemples

Laissez-nous utiliser un exemple pour mieux comprendre comment utiliser la fonction row_number (). Commencez par créer une base de données d'échantillons avec des données factices comme indiqué dans les requêtes ci-dessous:

Créer une base de données dummy_db;
Utilisez dummy_db;
Créer une table Dummy_Table (
id int not null identité (1,1) clé primaire,
FirstName Varchar (50),
LastName Varchar (50),
Email Varchar (100),
argent salarial,
Département Varchar (50)
));
Insérer dans Dummy_Table (FirstName, LastName, Email, Salaire, département)
Valeurs ('Karen', 'Colmen', 'Karen @ Col.IO ', 149000 $, «Game Development»),
('Alex', 'Bell', 'Bell.Alex @ mail.com ', 150000 $, «développement graphique»),
(«Charles», «Johnson», «Charles @ Johnson.org ', 120500 $, «DevOps Development»),
('Bruce', 'Greer', 'Brucegreer @ hotmail.com ', 118000 $, «développement de sécurité»),
('Sarah', 'Austin', 'Sarah100 @ Yahoo.com ', 165000 $, «développement de jeu»),
('Diana', 'Kim', 'kim_diana @ protonmail.com ', 105000 $, «développement frontal»),
('Peter', 'cogh', 'Peter @ gmail.com ', 100000 $, «développement graphique»),
('David', 'Hugh', 'Hughdavid @ Outlook.com ', 126000 $, «développement de base de données»),
('Tobias', 'Newne', 'Tobias @ Newne.com ', 115500 $, «développement de base de données»),
('Winnie', 'lorentz', 'lorentzw @ info.de ', 175000 $, «développement graphique»),
('Guy', 'Miche', 'Miche @ Guy.TV ', 145000 $, «jeu de jeu»);
SELECT * FROM DEMOM_TABLE;

La requête ci-dessus doit renvoyer un ensemble résultant comme indiqué:

Exemple 1

L'instruction SQL suivante utilise la fonction ROW_NUMBER pour attribuer un numéro séquentiel aux lignes de l'ensemble résultant:

Sélectionnez Row_number () sur (
Ordre par salaire) comme ROW_NUM,
prénom,
nom de famille,
département
De Dummy_Table;

La requête ci-dessus doit renvoyer un ensemble de résultats comme indiqué ci-dessous:

Exemple 2

Nous pouvons utiliser la fonction ROW_NUMBER pour localiser l'employé avec le salaire le plus élevé d'un département spécifique.

Considérez l'exemple de requête ci-dessous:

Sélectionnez FirstName, LastName, Salaire, département, ROW_NUMBER () sur (Partition par Order Department by Salary DESC) AS ROW_NUM FROM DUMMY_TABLE;

La requête ci-dessus divise les données en partitions logiques basées sur le département. Nous appliquons ensuite la fonction ROW_NUMBER () sur commande par le salaire en ordre décroissant.

Exemple 3

Vous pouvez utiliser la fonction ROW_NUMBER pour la pagination. Étant donné que la fonction ROW_NUMBER attribue un numéro séquentiel à toutes les lignes, nous pouvons l'utiliser pour filtrer pour un nombre spécifique de résultats par page.

Prenez l'exemple ci-dessous:

Sélectionner * à partir de
(Sélectionnez Row_number ()
Sur (ordre par salaire) comme ROW_NUM, FirstName, LastName, département
De dummy_table) dt
Où row_num> = 1 et row_num <= 5;

La requête ci-dessus doit renvoyer une sortie comme suit:

Conclusion

Dans ce guide, nous avons discuté de la façon d'utiliser la fonction SQL Server Row_number () pour attribuer des numéros séquentiels aux lignes dans un ensemble de résultats. De plus, nous avons examiné la syntaxe de fonction et la valeur de retour. Nous espérons que vous avez trouvé cet article utile. Découvrez plus d'articles sur les conseils pour les conseils et les tutoriels.