Fonction de rang SQL Server

Fonction de rang SQL Server

Il existe un besoin fondamental de classer ou de classer divers enregistrements lorsque vous travaillez avec des données. Par exemple, vous pouvez classer les équipes en fonction de leurs scores, des employés en fonction de leur salaire et bien d'autres.

La plupart d'entre nous effectuent des calculs en utilisant des fonctions qui renvoient une seule valeur. Dans ce guide, nous explorerons comment utiliser la fonction de rang SQL Server pour renvoyer une valeur globale pour un groupe de lignes spécifique.

SQL Server Rank () Fonction: les bases

La fonction RANK () fait partie des fonctions de fenêtre SQL Server. Il fonctionne en attribuant un rang à chaque ligne pour une partition spécifique de l'ensemble résultant.

La fonction attribue la même valeur de rang pour les lignes dans une partition similaire. Il attribue le premier rang, la valeur de 1 et ajoute une valeur consécutive à chaque rang.

La syntaxe de la fonction de rang est la suivante:

se classer (
[partition par expression],
Ordre par expression [ASC | DESC]
));

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

La clause de partition par la clause divise les lignes en partitions spécifiques où la fonction de rang est appliquée. Par exemple, dans une base de données contenant des données sur les employés, vous pouvez partitionner des lignes basées sur les départements dans lesquels ils travaillent.

La clause suivante, Order By, définit l'ordre dans lequel les lignes sont organisées dans les partitions spécifiées.

SQL Server Rank () Fonction: utilisation pratique

Prenons un exemple pratique pour comprendre comment utiliser la fonction Rank () dans SQL Server.

Commencez par créer un exemple de table contenant des informations sur les employés.

Créer des développeurs de table (
ID INT Identité (1,1), pas une clé primaire nul,
Nom Varchar (200) pas null,
Département Varchar (50),
argent salarial
));

Ensuite, ajoutez des données au tableau:

Insérer dans les développeurs (nom, département, salaire)
Valeurs («Rebecca», «Game Developer», 120000 $),
('James', 'Mobile Developer', 110000 $),
(«Laura», «DevOps Developer», 180000 $),
(«Quill», «Mobile Developer», 109000 $),
(«John», «développeur complet», 182000 $),
('Matthew', 'Game Developer', 140000 $),
(«Caitlyn», «DevOps Developer», 123000 $),
(«Michelle», «Data Science Developer», 204000 $),
(«Antony», «Front-End Developer», 103100 $),
(«Khadija», «Backend Developer», 193000 $),
(«Joseph», «Game Developer», 11500 $);
Sélectionner * chez les développeurs;

Vous devriez avoir une table avec les enregistrements comme indiqué:

Exemple 1: commande par

Utilisez la fonction de rang pour attribuer des rangs aux données. Un exemple de requête est comme indiqué:

SELECT *, RANK () Over (Order by Department) AS RANK_NUMBER des développeurs;

La requête ci-dessus doit donner la sortie comme indiqué:

La sortie ci-dessus montre que la fonction a attribué aux lignes des départements similaires une valeur de rang similaire. Remarquez que la fonction ignore certaines valeurs de rang en fonction du nombre de valeurs ayant le même rang.

Par exemple, à partir du rang de 7, la fonction passe au classement 10, car les rangs 8 et 9 sont attribués aux deux valeurs consécutives de rang 7.

Exemple 2: partition par

Considérez l'exemple ci-dessous. Il utilise la fonction de rang pour attribuer un rang aux développeurs du même département.

SELECT *, RANK () Over (Partition by Department Order by Salary DESC) As Rank_number des développeurs;

La requête ci-dessus commence par partitionner les lignes en fonction de leurs départements. Ensuite, la clause Order By trie les enregistrements dans chaque partition par le salaire en ordre décroissant.

La sortie résultante est comme indiqué:

Conclusion

Dans ce guide, nous avons couvert comment travailler avec la fonction de rang dans SQL Server, vous permettant de partitionner et de classer les lignes.

Merci d'avoir lu!