PaliSkill
← SQL — Fonctions de fenêtrage

Leçon 5 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes

Combiner une fenêtre, un CASE et un GROUP BY classique

Une fonction de fenêtre calculée dans une CTE peut ensuite être réutilisée par un GROUP BY classique dans la requête englobante — combinant ainsi les deux mondes.

WITH comparaison AS (
  SELECT boutique, mois, montant,
    CASE
      WHEN montant > AVG(montant) OVER (PARTITION BY boutique) THEN $q2$au-dessus$q2$
      WHEN montant < AVG(montant) OVER (PARTITION BY boutique) THEN $q2$en dessous$q2$
      ELSE $q2$dans la moyenne$q2$
    END AS position_relative
  FROM ventes_boutique
)
SELECT boutique, position_relative, COUNT(*) AS nb_mois
FROM comparaison
GROUP BY boutique, position_relative
ORDER BY boutique, position_relative;

La moyenne de Nord (100, 150, 200) est 150 : mois 1 (100) est en dessous, mois 2 (150) est dans la moyenne, mois 3 (200) est au-dessus — 3 groupes d'1 mois chacun. La moyenne de Sud (80, 80, 140) est 100 : les deux mois à 80 sont en dessous (groupe de 2), le mois à 140 est au-dessus (groupe d'1).

Résultat final : 5 lignes (3 pour Nord, 2 pour Sud).

À retenir :

  • Une CTE peut calculer une colonne à base de fonctions de fenêtre, puis la requête englobante peut la traiter comme n'importe quelle colonne normale — y compris avec GROUP BY, qui ne comprend pourtant pas les fonctions de fenêtre par lui-même.
  • Cette séparation (fenêtre dans la CTE, agrégation classique par-dessus) est la façon standard de combiner les deux mécanismes.

À vous de jouer : combien de mois la boutique Sud a-t-elle dans la catégorie 'en dessous' ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que l'attestation finale.

8 000 XOF / 12,20 € / 13,29 $

Débloquez les 78 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.