Défi : Utilisation de la Fonction Fenêtre
Considérons la table bank_accounts
que nous avons utilisée dans les sections précédentes :
Supposons que nous souhaitions ajouter à la table des informations sur la classe à laquelle chaque utilisateur appartient en fonction du solde de son compte.
Les classes seront déterminées comme suit :
Une personne dont le solde du compte se situe dans les
25%
inférieurs appartiendra à la quatrième classe ;Une personne dont le solde du compte se situe entre
25%
et50%
appartiendra à la troisième classe ;Une personne dont le solde du compte se situe entre
50%
et75%
appartiendra à la deuxième classe ;Une personne dont le solde du compte se situe dans les
25%
supérieurs appartiendra à la première classe.
Pour résoudre ce problème, nous pouvons utiliser une fonction de fenêtre appelée NTILE()
.
La fonction NTILE()
est une fonction de fenêtre qui divise les lignes d'une partition ordonnée en un nombre spécifié de groupes d'effectifs à peu près égaux, appelés « tuiles ».
Elle attribue à chaque ligne un numéro de groupe, à partir de 1
, en fonction du groupe auquel elle appartient.
sql
Note
Dans cet exemple, il n'est pas nécessaire de spécifier une clause
PARTITION BY
car nous souhaitons appliquer la fonctionNTILE()
à l'ensemble du résultat, et non à des sous-ensembles ou partitions spécifiques des données.
La clauseORDER BY
suffit car elle définit l'ordre dans lequel les lignes sont réparties dans les tuiles, garantissant ainsi que le regroupement se fait selon l'ordre trié des salaires sur l'ensemble de la table.
Si nous voulions calculer les tuiles au sein de groupes spécifiques (par exemple, des départements), nous utiliserionsPARTITION BY
.
Swipe to start coding
Votre tâche consiste à appliquer la fonction NTILE()
pour obtenir des informations sur la classe de chaque titulaire de compte.
Vous devez :
- Spécifier le nombre de classes comme argument de la fonction.
- Fournir un ordre basé sur le solde du compte pour déterminer la classe.
- Comme nous supposons que la première classe correspond au solde le plus élevé, il faut donc trier les soldes par ordre décroissant.
Solution
Merci pour vos commentaires !