Fonction de fenêtre de classement MySQL

Fonction de fenêtre de classement MySQL
La méthode de classement alloue 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 une figure des rangs de la ligne qui le précède. MySQL utilise une fonctionnalité de classement qui aide un rang par rang dans une partition de schéma. Dans MySQL, les méthodes de notation sont en effet une semi-partie de la méthode de la fenêtre. Vous utiliserez les méthodes de notation dans MySQL avec les clauses suivantes:
  • Les méthodes fonctionnent toujours avec une clause sur ().
  • Par ordre chronologique, ils attribuent chaque rang un rang.
  • Selon la commande par, les fonctions allacent un rang à chaque ligne.
  • Les lignes semblent toujours avoir un rang attribué à eux, en commençant par un pour chaque nouvelle partition.

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

  • Rang
  • Rang dense
  • Pourcentage de rang

MySQL RAND ():

Ceci est une méthode qui donne un rang dans une partition ou un tableau de résultat avec lacunes Par rangée. Chronologiquement, le classement des lignes n'est pas alloué tout le temps (je.e., augmenté de un par rapport à la rangée précédente). Même lorsque vous avez une égalité entre plusieurs des valeurs, à ce moment-là, l'utilitaire Rank () lui applique le même classement. De plus, son rang antérieur plus un chiffre répété peut être le numéro de rang ultérieur.

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

Supposons que nous avons un tableau ci-dessous nommé «même» dans une base de données «données», avec certains enregistrements.

>> Sélectionner * à partir des données.même;

Exemple 01: Simple Rank ()

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

>> sélectionnez id, rang () over (ordonnance par id) my_rank de fata.même;

Exemple 02: Rank () Utilisation de partition

Supposons un autre tableau «employé» dans une base de données «données» avec les enregistrements suivants. Laissez-nous une autre instance qui divise le résultat défini en segments.

>> Sélectionner * à partir des données.employé;

Pour consommer la méthode Rank (), l'instruction ultérieure attribue le rang à chaque ligne et divise l'ensemble des résultats en partitions en utilisant «l'âge» et en les trier en fonction du «salaire». Cette requête a récupéré tous les enregistrements tout en se classant dans une colonne "New_Rank". Vous pouvez voir la sortie de cette requête ci-dessous. Il a trié la table en fonction du «salaire» et l'a divisé en fonction de «l'âge».

>> SELECT *, RANK () Over (Partition by Age Order by Salaire) new_rank à partir de données.employé;

Mysql dense_rank ():

C'est 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 donc il est attribué au rang exact par le rang dense, et son rang ultérieur est le prochain numéro suivant.

Exemple 01: simple dense_rank ()

Supposons que nous ayons une table «employé», et que vous devez classer les colonnes de table, «nom» et «salaire» selon la colonne «nom». Nous avons créé une nouvelle colonne «dens_rank» pour stocker la note des enregistrements dedans. Lors de l'exécution de la requête ci-dessous, nous avons les résultats suivants avec un classement différent à toutes les valeurs.

>> Sélectionnez Nom, Salaire, dense_rank () sur (Ordre par nom) dens_rank à partir des données.employé;

Exemple 02: dense_rank () Utilisation de partition

Voyons une autre instance qui divise le résultat en segments. Selon la syntaxe ci-dessous, l'ensemble résultant partitionné par la partition par phrase est renvoyé par l'instruction From, et la méthode dense_rank () est ensuite maculée à chaque section en utilisant la colonne "nom". Ensuite, pour chaque segment, l'ordre par phrase frappe pour déterminer l'impératif des lignes en utilisant la colonne «âge».

>> Sélectionnez le nom, l'âge, le salaire, dense_rank () sur (partition by nom Order by Age) new_rank à partir de données.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 unique 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 %_rank ():

Il s'agit en effet d'une méthode de classement en pourcentage (rang 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 valeur de zéro à 1.

Exemple 01: Simple pourcentage_rank ()

En utilisant le tableau «Employé», nous avons examiné l'exemple de la méthode simple pour perlest_rank (). Nous avons une requête ci-dessous donnée pour cela. La colonne Per_Rank a été générée par la méthode pour cent_rank () pour classer le résultat défini sur le formulaire pour pourcentage. Nous avons récupéré les données en fonction de l'ordre de tri de «l'âge» de la colonne, puis nous avons classé les valeurs de ce tableau. Le résultat de la requête de cet exemple nous a donné un classement en pourcentage pour les valeurs présentées dans l'image ci-dessous.

>> SELECT *, pour cent_rank () sur (ordonnance par âge) per_rank à partir des données.employé;

Exemple 02: %_rank () Utilisation de partition

Après avoir fait l'exemple simple de pour cent_rank (), c'est maintenant le tour de la clause «Partition by». Nous utilisons le même tableau «employé». Ayons un autre aperçu d'une autre instance qui divise le résultat définie en sections. Donné à partir de la syntaxe ci-dessous, le mur de réglage résultant par la partition par expression est remboursé par la déclaration From, ainsi que la méthode pour cent_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 0 et 1 valeurs.

>> SELECT *, pour cent_rank () sur (partition par ordre salarial par nom) par_rank à partir des données.employé;

Conclusion:

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