OVER, PARTITION BY, ORDER BY
Comprenez le modèle des fonctions de fenêtre : OVER, PARTITION BY (regroupement), ORDER BY (tri) et ses différences avec GROUP BY.
OVER, PARTITION BY, ORDER BY est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce qu'une fonction de fenêtre ?
Une fonction de fenêtre calcule une valeur sur un ensemble de lignes liées à la ligne actuelle — sans regrouper le résultat comme le fait GROUP BY. Vous conservez chaque ligne AND obtenez une colonne agrégée.
Exemple de base
Le total moyen des commandes dans toute la table, sur chaque ligne :
SELECT id, total,
AVG(total) OVER () AS avg_total
FROM orders;Clause OVER
La clause OVER (...) définit la fenêtre. Des parenthèses vides signifient « l'ensemble du résultat ».
SELECT id, total,
SUM(total) OVER () AS grand_total
FROM orders;PARTITION BY : regrouper la fenêtre
Comme GROUP BY, mais les lignes ne sont pas regroupées :
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id) AS user_total
FROM orders;
-- Every order keeps its row; user_total is the same for all of one user's orders.ORDER BY dans la fenêtre
ORDER BY dans OVER définit l'ordre des lignes pour les calculs cumulés :
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;
-- Running total per user, ordered by date.Fenêtre contre GROUP BY
Comparaison côte à côte :
-- GROUP BY: 1 row per user
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Window: 1 row per order, with user total alongside
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id)
FROM orders;Un cadre différent pour chaque ligne
Le « cadre » est l'ensemble des lignes de la partition que la fonction examine. Le cadre par défaut avec ORDER BY va « du début à la ligne actuelle » — c'est ce qui produit les totaux cumulés.
Fenêtres nommées
Si plusieurs fonctions partagent une fenêtre, nommez-la une seule fois :
SELECT id, user_id, total,
SUM(total) OVER w AS running_sum,
AVG(total) OVER w AS running_avg
FROM orders
WINDOW w AS (PARTITION BY user_id ORDER BY created_at);La plupart des agrégats fonctionnent comme fonctions de fenêtre
COUNT, SUM, AVG, MIN, MAX — tous peuvent être utilisés sur une fenêtre. Les fonctions de fenêtre spécialisées ajoutent ROW_NUMBER, RANK, LAG/LEAD, NTILE, etc.
Les fonctions de fenêtre s'exécutent après WHERE
Ordre logique : FROM → WHERE → GROUP BY → HAVING → window functions → SELECT → ORDER BY → LIMIT. WHERE filtre donc les lignes avant le calcul des fenêtres.
Considérations de performances
Les fonctions de fenêtre nécessitent un tri (ou une fonction de hachage). Pour les grandes partitions, un index sur les colonnes (partition, ordre) évite l'étape de tri.
Récapitulatif
Les fonctions de fenêtre ajoutent des valeurs agrégées à chaque ligne.
- OVER () = résultat complet
- PARTITION BY = regrouper la fenêtre
- ORDER BY dans la fenêtre = activer les calculs cumulés
Vérification rapide
Que calcule SUM(x) OVER (PARTITION BY user_id) ?
Questions Fréquemment Posées
La leçon « OVER, PARTITION BY, ORDER BY » est-elle gratuite ?
Oui — le texte complet de « OVER, PARTITION BY, ORDER BY » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « OVER, PARTITION BY, ORDER BY » ?
Comprenez le modèle des fonctions de fenêtre : OVER, PARTITION BY (regroupement), ORDER BY (tri) et ses différences avec GROUP BY. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « OVER, PARTITION BY, ORDER BY » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD et modèles de séries temporelles
- Totaux cumulés et moyennes mobiles