Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Utilisation de la Fonction Fenêtre | Quelques Sujets Supplémentaires
Techniques Avancées en SQL

Glissez pour afficher le menu

book
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% et 50% appartiendra à la troisième classe ;

  • Une personne dont le solde du compte se situe entre 50% et 75% 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 fonction NTILE() à l'ensemble du résultat, et non à des sous-ensembles ou partitions spécifiques des données.
La clause ORDER 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 utiliserions PARTITION BY.

Tâche

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 :

  1. Spécifier le nombre de classes comme argument de la fonction.
  2. Fournir un ordre basé sur le solde du compte pour déterminer la classe.
  3. 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

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
Nous sommes désolés de vous informer que quelque chose s'est mal passé. Qu'est-il arrivé ?

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

book
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% et 50% appartiendra à la troisième classe ;

  • Une personne dont le solde du compte se situe entre 50% et 75% 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 fonction NTILE() à l'ensemble du résultat, et non à des sous-ensembles ou partitions spécifiques des données.
La clause ORDER 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 utiliserions PARTITION BY.

Tâche

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 :

  1. Spécifier le nombre de classes comme argument de la fonction.
  2. Fournir un ordre basé sur le solde du compte pour déterminer la classe.
  3. 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

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Nous sommes désolés de vous informer que quelque chose s'est mal passé. Qu'est-il arrivé ?
some-alt