Fonctions de Fenêtre
Glissez pour afficher le menu
Fonctions de fenêtre : catégorie de fonctions SQL effectuant des calculs sur un ensemble de lignes liées à la ligne courante dans une fenêtre ou partition définie.
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 :
12SELECT * FROM sales
Si l'objectif est de calculer le chiffre d'affaires 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 résultat 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.
Implémentation
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;
- Nom de la fonction :
SUM - Description : Calcule la somme d'une colonne spécifiée dans une fenêtre définie.
- Arguments :
Amount: La colonne à additionner.
- Fonction de fenêtre :
- OVER : Spécifie la fenêtre sur laquelle l'agrégation est effectuée.
- PARTITION BY Product_ID : Divise le jeu de résultats en partitions selon les valeurs de la colonne
Product_ID. La somme est calculée séparément pour chaque partition.
- Alias :
Total_Revenue_Per_Product: Le nom attribué à la somme calculée pour chaque partition. - Utilisation : Cette fonction est utilisée pour calculer le chiffre d'affaires total par produit, en additionnant les montants pour chaque identifiant de produit.
- Résultat : Le jeu de résultats inclut les colonnes
Sales_ID,Product_ID,Sales_Date,AmountetTotal_Revenue_Per_Productde la tablesales, oùTotal_Revenue_Per_Productreprésente le chiffre d'affaires total pour chaque identifiant de produit. - Ordre : Le jeu de résultats est ordonné par
Sales_Date.
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 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