Fonction SQL DENSE_RANK()

Fonction Sql Dense Rank



Les fonctions de fenêtre sont une fonctionnalité cruciale de SQL et jouent un rôle fondamental dans les calculs de données complexes et les opérations dans les bases de données SQL. L'une des fonctions des fonctions de la fenêtre SQL est dense_rank().

La fonction DENSE_RANK() nous permet d'attribuer un classement unique à chaque ligne d'un ensemble de résultats en fonction des valeurs d'une colonne spécifiée supplémentaire. Elle est très similaire à la fonction Rank() mais avec de légères différences dans la façon dont la fonction gère les enregistrements en double.

Dans ce didacticiel, nous explorerons le fonctionnement de cette fonction, la syntaxe fournie et comment nous pouvons l'utiliser dans une base de données.







Comment ça fonctionne

Commençons par expliquer le fonctionnement de cette fonction. Il est bon de garder à l’esprit que la fonction est de haut niveau et que nous ne pouvons pas expliquer l’implémentation sous-jacente.



La fonction fonctionne en attribuant un rang à chaque ligne du jeu de résultats en commençant par le rang 1 et en augmentant de 1 pour chaque valeur unique dans les colonnes.



Les lignes avec des valeurs similaires (doublons) dans les colonnes spécifiées se voient attribuer le même rang et la ligne suivante avec une valeur différente se voit attribuer le prochain rang disponible, sans aucun espace.





Comme nous l'avons mentionné, la fonction ne laisse aucun espace là où il y a des valeurs en double, ce qui la rend différente de la fonction Rank().

Une utilisation courante de la fonction dense_rank() consiste à effectuer les opérations de classement. Par exemple, nous pouvons l'utiliser pour trouver les N premiers enregistrements, etc.



Syntaxe de la fonction :

Ce qui suit décrit la syntaxe de la fonction dense_rank() :

DENSE_RANK() SUR (

[PARTITION PAR expression_partition, ... ]

COMMANDE PAR expression_tri [ASC | DESC], ...

)

Dans la syntaxe donnée :

  1. Nous commençons par la fonction dense_rank() elle-même.
  2. La clause OVER signale le début des spécifications de la fonction window. Ceci définit la manière dont le classement est appliqué dans l'ensemble de résultats.
  3. La PARTITION BY partition_expression est une clause facultative qui nous permet de partitionner l'ensemble résultant en groupes ou partitions basés sur une ou plusieurs colonnes. Le classement est appliqué séparément sur chaque partition, le classement étant réinitialisé sur une nouvelle partition.
  4. L'expression_tri ORDER BY spécifie l'ordre dans lequel nous souhaitons utiliser pour trier les données dans les partitions résultantes.

Exemples de données

Pour montrer comment utiliser la fonction dense_rank(), commençons par un tableau avec un exemple de données. Dans notre cas, nous utilisons un exemple de tableau « commandes » comme suit :

Exemple 1 : utilisation de la fonction Dense_Rank()

Nous pouvons utiliser la fonction dense_rank() pour classer les commandes résultantes en fonction du prix. Prenons l'exemple de requête suivant :

SÉLECTIONNER

numéro de commande,

nom_utilisateur_client,

produit_acheté,

DENSE_RANK() SUR (

COMMANDE PAR

prix DISQUE

) prix_rang

DEPUIS

commandes o;

Dans l'exemple donné, nous utilisons la fonction dense_rank() pour classer les données en fonction du prix des commandes. Nous omettons la clause PARTITION BY car nous ne regroupons pas les données.

Le résultat résultant est le suivant :

Exemple 2 : PARTITION PAR

Nous pouvons également ajouter la clause PARTITION BY pour regrouper les données en différents segments, par exemple en fonction du produit acheté.

Un exemple de requête est le suivant :

SÉLECTIONNER

numéro de commande,

nom_utilisateur_client,

produit_acheté,

DENSE_RANK() SUR (

partition par product_purchased

COMMANDE PAR

prix DISQUE

) prix_classement

DEPUIS

commandes o;

Cela devrait regrouper les données en différents groupes en fonction des groupes résultants et appliquer le classement des éléments de chaque groupe.

Conclusion

Dans cet article, nous avons appris les bases de l'utilisation et de l'utilisation de la fonction de fenêtre dense_rank() en SQL pour attribuer un rang aux valeurs en fonction de colonnes spécifiques.