Leçon 7 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes
Fonction de fenêtre vs GROUP BY : une même moyenne, deux approches
AVG(colonne) OVER (PARTITION BY ...) sans ORDER BY et AVG(colonne) ... GROUP BY ... classique calculent la même moyenne, mais avec une différence essentielle sur le nombre de lignes conservées.
-- Fonction de fenêtre : conserve toutes les lignes
SELECT boutique, mois, montant,
AVG(montant) OVER (PARTITION BY boutique) AS moyenne_fenetre
FROM ventes_boutique;
-- GROUP BY classique : réduit à une ligne par boutique
SELECT boutique, AVG(montant) AS moyenne_groupby
FROM ventes_boutique
GROUP BY boutique;
La première requête renvoie 6 lignes (une par mois), chacune avec la moyenne de sa boutique en plus des colonnes mois et montant. La seconde renvoie seulement 2 lignes (une par boutique), sans plus aucun accès à mois ou montant. Dans les deux cas, la moyenne de Nord vaut 150 et celle de Sud vaut 100 — c'est le même calcul, présenté différemment.
À retenir :
- Une fonction de fenêtre sans ORDER BY et un GROUP BY classique peuvent calculer exactement la même valeur agrégée, mais la fonction de fenêtre conserve le détail ligne par ligne, là où GROUP BY le sacrifie.
- Ce choix dépend du besoin : GROUP BY convient pour un rapport résumé, la fonction de fenêtre pour comparer chaque ligne à un agrégat sans perdre le détail.
À vous de jouer : la moyenne obtenue pour Nord est-elle identique entre les deux requêtes ? Répondez par oui ou non.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 72 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès