MySQL MariaDB

Fonction de fenêtre MySQL RANK

Fonction de fenêtre MySQL RANK
La méthode Ranking attribue un rang à l'intérieur de la partition d'un résultat d'un ensemble à chaque ligne. Le rang d'une ligne est déterminé en incrémentant un chiffre de rangs à partir de la ligne qui la précède. MySQL utilise une fonction de classement qui permet un classement par ligne dans une partition de schéma. Dans MySQL, les méthodes de notation sont en effet une demi-partie de la méthode window. Vous utiliserez les méthodes d'évaluation de MySQL avec les clauses suivantes :

Au total, il existe trois types de fonctions de classement, comme suit :

RANG MySQL() :

Il s'agit d'une méthode qui donne un rang à l'intérieur d'une partition ou d'un tableau de résultats avec lacunes Par rangée. Chronologiquement, le classement des lignes n'est pas attribué tout le temps (i.e., augmenté de un par rapport à la ligne précédente). Même lorsque vous avez une égalité entre plusieurs valeurs, à ce stade, l'utilitaire rank() lui applique le même classement. De plus, son rang antérieur plus un chiffre de nombres répétés peut être le numéro de rang suivant.

Pour comprendre le classement, ouvrez le shell client en ligne de commande et tapez votre mot de passe MySQL pour commencer à l'utiliser.

Supposons que nous ayons une table ci-dessous nommée "même" dans une base de données "données", avec quelques enregistrements.

>> SÉLECTIONNER * À PARTIR des données.même;

Exemple 01 : RANG simple()

Ci-dessous, nous avons utilisé la fonction Rank dans la commande SELECT. Cette requête sélectionne la colonne "id" de la table "même" tout en la classant selon la colonne "id". Comme vous pouvez le voir, nous avons donné un nom à la colonne de classement, qui est « my_rank ». Le classement sera désormais stocké dans cette colonne, comme indiqué ci-dessous.

>> SELECT id, RANK() OVER( ORDER BY id ) my_rank FROM fata.même;

Exemple 02 : RANK() en utilisant PARTITION

Supposons une autre table « employé » dans une base de données « données » avec les enregistrements suivants. Ayons une autre instance qui divise l'ensemble de résultats en segments.

>> SÉLECTIONNER * À PARTIR des données.employé;

Pour utiliser la méthode RANK (), l'instruction suivante attribue le rang à chaque ligne et divise le résultat défini en partitions en utilisant « Age » et en les triant en fonction du « Salaire ». Cette requête a récupéré tous les enregistrements lors du classement dans une colonne "new_rank". Vous pouvez voir le résultat de cette requête ci-dessous. Il a trié le tableau selon « Salaire » et l'a divisé selon « Âge ».

>> SELECT *, RANK() OVER(PARTITION BY Age ORDER BY Salary) new_rank FROM data.employé;

MySQL DENSE_Rank() :

Il s'agit d'une fonctionnalité où, sans trous, détermine un rang pour chaque ligne à l'intérieur d'une division ou d'un ensemble de résultats. Le classement des lignes est le plus souvent alloué dans l'ordre séquentiel. Parfois, vous avez un lien entre les valeurs, et par conséquent, il est attribué au rang exact par le rang dense, et son rang suivant est le prochain numéro suivant.

Exemple 01 : Simple DENSE_RANK()

Supposons que nous ayons un tableau « employé » et que vous deviez classer les colonnes du tableau « Nom » et « Salaire » en fonction de la colonne « Nom ». Nous avons créé une nouvelle colonne "dens_Rank" pour stocker la note des enregistrements qu'elle contient. Lors de l'exécution de la requête ci-dessous, nous avons les résultats suivants avec un classement différent pour toutes les valeurs.

>> SELECT Nom, Salaire, DENSE_RANK() OVER( ORDER BY Nom ) dens_rank FROM data.employé;

Exemple 02 : DENSE_RANK() en utilisant PARTITION

Voyons une autre instance qui divise l'ensemble de résultats en segments. Selon la syntaxe ci-dessous, l'ensemble résultant partitionné par la phrase PARTITION BY est renvoyé par l'instruction FROM, et la méthode DENSE_RANK() est ensuite appliquée à chaque section à l'aide de la colonne « Nom ». Ensuite, pour chaque segment, la phrase ORDER BY s'étale pour déterminer l'impératif des lignes à l'aide de la colonne « Âge ».

>> SELECT Nom, Age, Salaire, DENSE_RANK() OVER(PARTITION BY Name ORDER BY Age) new_rank FROM data.employé;

Lors de l'exécution de la requête ci-dessus, vous pouvez voir que nous avons un résultat très distinct par rapport à la méthode Single dense_rank () dans l'exemple ci-dessus. Nous avons la même valeur répétée pour chaque valeur de ligne, comme vous pouvez le voir ci-dessous. C'est le lien des valeurs de rang.

MySQL PERCENT_RANK() :

Il s'agit en effet d'une méthode de classement en pourcentage (classement comparatif) qui calcule les lignes à l'intérieur d'une partition ou d'une collection de résultats. Cette méthode renvoie une liste à partir d'une échelle de valeurs de zéro à 1.

Exemple 01 : simple PERCENT_RANK()

En utilisant la table « employé », nous avons examiné l'exemple de la méthode simple PERCENT_RANK(). Nous avons une requête donnée ci-dessous pour cela. La colonne per_rank a été générée par la méthode PERCENT_Rank() pour classer le jeu de résultats sous forme de pourcentage. Nous avons récupéré les données selon l'ordre de tri de la colonne « Âge », puis nous avons classé les valeurs de ce tableau. Le résultat de la requête pour cet exemple nous a donné un classement en pourcentage pour les valeurs tel que présenté dans l'image ci-dessous.

>> SELECT *, PERCENT_RANK() OVER( ORDER BY Age ) per_rank FROM data.employé;

Exemple 02 : PERCENT_RANK() à l'aide de PARTITION

Après avoir fait l'exemple simple de PERCENT_RANK(), c'est maintenant au tour de la clause "PARTITION BY". Nous avons utilisé la même table « employé ». Ayons un autre aperçu d'une autre instance qui divise l'ensemble de résultats en sections. Compte tenu de la syntaxe ci-dessous, le mur défini résultant de l'expression PARTITION BY est remboursé par la déclaration FROM, ainsi que la méthode PERCENT_RANK () est ensuite utilisée pour classer chaque ordre de ligne par la colonne "Nom". Dans l'image affichée ci-dessous, vous pouvez voir que le jeu de résultats ne contient que des valeurs 0 et 1.

>> SELECT *, PERCENT_RANK() OVER(PARTITION BY Salary ORDER BY Name) per_rank FROM data.employé;

Conclusion:

Enfin, nous avons effectué les trois fonctions de classement des lignes utilisées dans MySQL, via le shell client en ligne de commande MySQL. De plus, nous avons pris en considération à la fois la clause simple et la clause PARTITION BY dans notre étude.

Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...