Leçons du module (1/4)
Introduction et clause OVER
Introduction et la clause OVER
Dans les leçons précédentes, nous avons vu comment utiliser GROUP BY pour agréger des données. Cependant, GROUP BY a une énorme limitation : il réduit les lignes. Si vous regroupez par ville, vous obtenez une seule ligne par ville et perdez les détails de chaque client.
C'est là que les Fonctions de fenêtre entrent en jeu. Ils vous permettent d'exécuter des calculs agrégés (tels que des sommes ou des moyennes) tout en conservant les lignes d'origine.
La clause OVER()
Le mot clé magique est OVER(). Il indique à la base de données que la fonction d'agrégation (par exemple SUM, AVG, COUNT) doit être traitée comme une fonction de fenêtre, calculée sur l'ensemble du jeu de résultats (la "fenêtre" globale), mais appliquée et renvoyée sur chaque ligne.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;Dans cet exemple, nous conservons chaque commande individuelle, mais chaque ligne comporte également une colonne global_average avec la moyenne de toutes les commandes. Très utile par exemple pour mesurer à quel point une commande s'écarte de la moyenne !
Sélectionnez la colonne « prix » dans le tableau « produits ». Ajoutez une colonne appelée 'global_max_price' contenant le prix maximum calculé avec une fonction fenêtre sur l'ensemble du tableau.
Afficher l'indice
Utilisez MAX(price) combiné avec OVER().
Solution disponible après 3 tentatives
Extrayez « id », « price » et ajoutez le prix moyen global (« global_avg ») du tableau « products ».
Afficher l'indice
Ajoutez simplement AVG(price) OVER().
Solution disponible après 3 tentatives