Passer au contenu principal
eLearner.app
Module 13 · Leçon 1 sur 449/57 dans le cours~15 min
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.

SQL
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 !

Exercice#sql.m13.l1.e1
Tentatives : 0Chargement…

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.

Chargement de l'éditeur…
Afficher l'indice

Utilisez MAX(price) combiné avec OVER().

Solution disponible après 3 tentatives

Exercice#sql.m13.l1.e2
Tentatives : 0Chargement…

Extrayez « id », « price » et ajoutez le prix moyen global (« global_avg ») du tableau « products ».

Chargement de l'éditeur…
Afficher l'indice

Ajoutez simplement AVG(price) OVER().

Solution disponible après 3 tentatives