Contenu du cours
Techniques Avancées en SQL
Techniques Avancées en SQL
Fonctions de Fenêtre
Les fonctions de fenêtre sont une catégorie de fonctions SQL qui effectuent des calculs sur un ensemble de lignes liées à la ligne actuelle dans une fenêtre ou une partition définie.
Elles sont utilisées pour effectuer 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 renvoyé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 du tableau principal plutôt que de générer un nouveau tableau groupé, le résultat pourrait apparaître comme suit :
Mais comment pouvons-nous le faire ?
Utiliser GROUP BY
n'est pas adapté pour cette tâche car cette clause réduit le nombre de lignes en les regroupant selon des critères spécifiés, ce qui entraîne uniquement le retour des identifiants et de 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 requis en utilisant la requête suivante :
SELECT 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 : Indique qu'une requête est sur le point de commencer ;
- 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 l'ensemble des résultats en partitions basées sur les valeurs de la ou des colonnes spécifiées. La fonction de fenêtre opère séparément sur chaque partition ;
- partition_column : La colonne utilisée pour partitionner l'ensemble des résultats.
- ORDER BY : Spécifie l'ordre des lignes au sein de chaque partition ;
- order_column : La colonne utilisée pour ordonner les lignes au sein de chaque partition.
- FROM : Indique la table source à partir de laquelle les données sont récupérées ;
- table_name : Le nom de la table à partir de laquelle les données sont sélectionnées.
Merci pour vos commentaires !