Utilisation de la fonction mysql dense_rank

Utilisation de la fonction mysql dense_rank
La fonction mysql dense_rank () est une fonction qui affiche le rang d'une ligne dans sa partition sans lacunes dans les valeurs de classement. Cette fonction est une fonction de fenêtre, ce qui signifie qu'elle a des similitudes avec des fonctions telles que Row_number () et Rank ().

Ce tutoriel approfondira le fonctionnement de la fonction dense MySQL et comment nous pouvons l'utiliser dans diverses opérations de base de données. Si vous souhaitez suivre ce tutoriel, envisagez de télécharger la base de données de Sakila à partir de la ressource fournie ci-dessous:

https: // dev.mysql.com / doc / index-autre.html

Utilisation de base

La fonction mysql dense_rank () affiche les rangs d'une ligne dans une partition sans lacunes. Les rangs des lignes augmentent d'une valeur de 1 par rapport à la valeur de rang unique de la ligne précédente.

La syntaxe générale de la fonction dense_rank () est comme suit:

Sélectionnez Col1 dense_rank () sur (partition par expr Ordre par expr [asc | desc]) RANK_COL_NAME de TB_NAME

Examinons de plus près la syntaxe des requêtes ci-dessus.

La fonction dense_rank () est liée à la clause de sélection, qui affichera les rangs des lignes du tableau spécifié.

La dense_rank () sur les sections renvoie le résultat de la fonction dense_rank () et la sortie maintenue dans le nom de colonne spécifiée.

La clause de partition divise les résultats renvoyés par la clause From dans les partitions. La fonction dense_rank () est appliquée à chaque partition.

Enfin, l'ordre par section spécifie l'ordre des lignes définies dans chaque partition.

Exemple de cas d'utilisation

Utilisons une exemple de base de données pour illustrer comment nous pouvons utiliser la fonction dense_rank (). Pour cet exemple, nous utiliserons la base de données Sakila et, plus précisément, la table de film dans la base de données Sakila.

En utilisant la fonction dense_rank (), nous pouvons classer les films par leur taux de location, comme indiqué dans la requête ci-dessous:

Utilisez Sakila;
SELECT TITLE, release_year, note, longueur, dense_rank () sur (partition par release_year Order by Rental_rate ASC) RAND_VALUE FROM FILM;

En raison de la quantité massive de données sur la base de données Sakila, je vais réorganiser la sortie pour une lecture et une illustration plus faciles.

La sortie est ci-dessous:



Si vous regardez attentivement la sortie ci-dessus, vous remarquerez que la sortie résultante va du rang 1 à 3, ce qui correspond aux valeurs Rental_rate dans le tableau du film. Les valeurs Rental_rate sont:

  1. 0.99 - rang 1
  2. 2.99 - rang 2
  3. 4.99 - rang 3

Dans l'exemple ci-dessus, nous avons utilisé la clause Partition par clause pour diviser les ensembles résultants en diverses partitions, dans ce cas, release_year.

Ensuite, nous avons utilisé l'ordre MySQL par la déclaration pour commander les films par le taux de location dans l'ordre croissant. Enfin, nous avons appliqué la fonction dense_rank () sur chaque partition spécifiée dans l'ordre par instruction.

Conclusion

Dans ce tutoriel, nous avons expliqué comment la fonction dense_rank () fonctionne dans une base de données et utilisé un exemple réel pour illustrer comment l'utiliser.

Vous pouvez en savoir plus sur dense_rank () AD d'autres fonctions de fenêtre à partir de la ressource fournie ci-dessous:

https: // dev.mysql.com / doc / Refman / 8.0 / en / fenêtres de fenêtre.html