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

bookFonctions de Fenêtre

Les fonctions de fenêtre constituent une catégorie de fonctions SQL qui effectuent des calculs sur un ensemble de lignes liées à la ligne courante, à l'intérieur d'une fenêtre ou partition définie.
Elles sont utilisées pour réaliser des calculs et des analyses sur un sous-ensemble de lignes sans réduire l'ensemble des résultats, contrairement aux fonctions d'agrégation qui réduisent généralement le nombre de lignes retournées par une requête.

Explication

Supposons que nous ayons la table Sales suivante :

Si notre objectif est de calculer le revenu total pour chaque produit spécifique et de l'afficher dans une colonne supplémentaire au sein de la table principale plutôt que de générer une nouvelle table groupée, le résultat pourrait ressembler à ceci :

Mais comment pouvons-nous le faire ?
L'utilisation de GROUP BY n'est pas adaptée à cette tâche car cette clause réduit le nombre de lignes en les regroupant selon des critères spécifiés, ce qui a pour effet de ne retourner que les identifiants et leurs valeurs de somme correspondantes.

C'est pourquoi les fonctions de fenêtre sont essentielles pour résoudre ce problème.

Mise en œuvre

Nous pouvons obtenir le résultat souhaité en utilisant la requête suivante :

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Une syntaxe générale pour créer une fonction de fenêtre peut être décrite comme suit :

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT : Indique le début d'une requête ;
  • aggregation_func() : La fonction d'agrégation (par exemple, SUM, AVG, COUNT) qui effectue un calcul sur un ensemble de lignes défini par la fenêtre ;
  • OVER : Mot-clé qui introduit la fonction de fenêtre ;
  • PARTITION BY : Divise le jeu de résultats en partitions selon les valeurs de la ou des colonnes spécifiées. La fonction de fenêtre s'applique séparément à chaque partition ;
    • partition_column : La colonne utilisée pour partitionner le jeu de résultats.
  • ORDER BY : Spécifie l'ordre des lignes à l'intérieur de chaque partition ;
    • order_column : La colonne utilisée pour ordonner les lignes dans chaque partition.
  • FROM : Indique la table source à partir de laquelle les données sont extraites ;
    • table_name : Le nom de la table à partir de laquelle les données sont sélectionnées.
question mark

Quelle clause est utilisée pour définir la partition d'une fonction de fenêtre ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3

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

Awesome!

Completion rate improved to 4.35

bookFonctions de Fenêtre

Glissez pour afficher le menu

Les fonctions de fenêtre constituent une catégorie de fonctions SQL qui effectuent des calculs sur un ensemble de lignes liées à la ligne courante, à l'intérieur d'une fenêtre ou partition définie.
Elles sont utilisées pour réaliser des calculs et des analyses sur un sous-ensemble de lignes sans réduire l'ensemble des résultats, contrairement aux fonctions d'agrégation qui réduisent généralement le nombre de lignes retournées par une requête.

Explication

Supposons que nous ayons la table Sales suivante :

Si notre objectif est de calculer le revenu total pour chaque produit spécifique et de l'afficher dans une colonne supplémentaire au sein de la table principale plutôt que de générer une nouvelle table groupée, le résultat pourrait ressembler à ceci :

Mais comment pouvons-nous le faire ?
L'utilisation de GROUP BY n'est pas adaptée à cette tâche car cette clause réduit le nombre de lignes en les regroupant selon des critères spécifiés, ce qui a pour effet de ne retourner que les identifiants et leurs valeurs de somme correspondantes.

C'est pourquoi les fonctions de fenêtre sont essentielles pour résoudre ce problème.

Mise en œuvre

Nous pouvons obtenir le résultat souhaité en utilisant la requête suivante :

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Une syntaxe générale pour créer une fonction de fenêtre peut être décrite comme suit :

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT : Indique le début d'une requête ;
  • aggregation_func() : La fonction d'agrégation (par exemple, SUM, AVG, COUNT) qui effectue un calcul sur un ensemble de lignes défini par la fenêtre ;
  • OVER : Mot-clé qui introduit la fonction de fenêtre ;
  • PARTITION BY : Divise le jeu de résultats en partitions selon les valeurs de la ou des colonnes spécifiées. La fonction de fenêtre s'applique séparément à chaque partition ;
    • partition_column : La colonne utilisée pour partitionner le jeu de résultats.
  • ORDER BY : Spécifie l'ordre des lignes à l'intérieur de chaque partition ;
    • order_column : La colonne utilisée pour ordonner les lignes dans chaque partition.
  • FROM : Indique la table source à partir de laquelle les données sont extraites ;
    • table_name : Le nom de la table à partir de laquelle les données sont sélectionnées.
question mark

Quelle clause est utilisée pour définir la partition d'une fonction de fenêtre ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3
some-alt