Fonctions 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 :
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
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.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
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
Fonctions 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 :
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
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.
Merci pour vos commentaires !