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 de Fenêtre | Quelques Sujets Supplémentaires
Optimisation SQL et Fonctionnalités de Requête

bookDéfi : Utilisation de la Fonction de Fenêtre

Supposons que nous souhaitions ajouter des informations à la table concernant à quelle classe appartient chaque utilisateur en fonction de leur solde de compte.

Les classes seront déterminées comme suit :

  • Une personne dont le solde de compte se situe dans les 25% inférieurs appartiendra à la quatrième classe ;
  • Une personne dont le solde de compte se situe entre 25% et 50% appartiendra à la troisième classe ;
  • Une personne dont le solde de compte se situe entre 50% et 75% appartiendra à la deuxième classe ;
  • Une personne dont le solde de 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, ou "tuiles".
Elle attribue à chaque ligne un numéro de groupe, en commençant par 1, selon le groupe auquel elle appartient.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)
Note
Remarque

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

Complétez les espaces vides pour utiliser la fonction NTILE() afin que chaque titulaire de compte soit affecté à une classe de 1 à 4, où la classe 1 regroupe les soldes les plus élevés.

  • Utilisez 4 comme nombre de classes ;
  • Triez selon la colonne balance par ordre décroissant ;
  • Assurez-vous que votre résultat affiche account_holder, balance et leur class.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

Suggested prompts:

How do I use the NTILE() function to classify users into these classes?

Can you show an example SQL query that implements this classification?

What does the output table look like after adding the class information?

close

Awesome!

Completion rate improved to 4.55

bookDéfi : Utilisation de la Fonction de Fenêtre

Glissez pour afficher le menu

Supposons que nous souhaitions ajouter des informations à la table concernant à quelle classe appartient chaque utilisateur en fonction de leur solde de compte.

Les classes seront déterminées comme suit :

  • Une personne dont le solde de compte se situe dans les 25% inférieurs appartiendra à la quatrième classe ;
  • Une personne dont le solde de compte se situe entre 25% et 50% appartiendra à la troisième classe ;
  • Une personne dont le solde de compte se situe entre 50% et 75% appartiendra à la deuxième classe ;
  • Une personne dont le solde de 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, ou "tuiles".
Elle attribue à chaque ligne un numéro de groupe, en commençant par 1, selon le groupe auquel elle appartient.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)
Note
Remarque

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

Complétez les espaces vides pour utiliser la fonction NTILE() afin que chaque titulaire de compte soit affecté à une classe de 1 à 4, où la classe 1 regroupe les soldes les plus élevés.

  • Utilisez 4 comme nombre de classes ;
  • Triez selon la colonne balance par ordre décroissant ;
  • Assurez-vous que votre résultat affiche account_holder, balance et leur class.

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 4
single

single

some-alt