Clauses de fenêtre : ROWS ou RANGE
Choisissez entre les clauses de fenêtre ROWS BETWEEN et RANGE BETWEEN et comprenez comment chacune gère les doublons et les intervalles manquants.
Clauses de fenêtre : ROWS ou RANGE 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.
Le cadre à l'intérieur de OVER
Une fonction de fenêtre s'évalue sur un cadre — un sous-ensemble de lignes de la partition. Le cadre est défini par :
OVER (
PARTITION BY ...
ORDER BY ...
ROWS BETWEEN <start> AND <end> -- or RANGE BETWEEN ...
)Cadre par défaut
Si vous indiquez ORDER BY sans cadre, la valeur par défaut est :
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- "From the first row up to all rows tied with the current row".ROWS compte physiquement
ROWS compte N lignes dans l'ordre de la partition, quelle que soit leur valeur :
SUM(x) OVER (ORDER BY day ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
-- The current row plus the previous 2. Exactly 3 rows.RANGE compte selon la valeur
RANGE compte les lignes dont la valeur ORDER BY se trouve dans une fenêtre autour de la valeur actuelle :
SUM(x) OVER (
ORDER BY day
RANGE BETWEEN INTERVAL '2 days' PRECEDING AND CURRENT ROW
)
-- All rows within 2 days (by calendar) of the current row.Pourquoi cette distinction est importante
En présence de lacunes dans les données, ROWS et RANGE donnent des résultats différents :
-- Days: 1, 3, 5 (no 2 or 4)
-- ROWS BETWEEN 2 PRECEDING AND CURRENT ROW for day 5: rows 1,3,5 = 3 days
-- RANGE BETWEEN INTERVAL '2 days' PRECEDING for day 5: only days 3,5 = 2 daysCadre GROUPS (PG 11+)
GROUPS compte les groupes de pairs (valeurs à égalité pour ORDER BY) plutôt que les lignes individuelles :
SUM(x) OVER (
ORDER BY tier
GROUPS BETWEEN 1 PRECEDING AND CURRENT ROW
)
-- "The current tier and the previous tier" — useful when ORDER BY has many ties.Limites du cadre
UNBOUNDED PRECEDING— première ligne de la partitionn PRECEDINGCURRENT ROWn FOLLOWINGUNBOUNDED FOLLOWING— dernière ligne
Total cumulé
Somme depuis le début jusqu'à la ligne actuelle :
SUM(x) OVER (ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-- Same as the default frame.Fenêtre glissante vers le passé
La moyenne glissante sur N jours :
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS avg_7dFenêtre centrée
Regarder dans les deux directions :
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS centred_7dLa surprise de LAST_VALUE
Avec le cadre par défaut, LAST_VALUE renvoie la ligne actuelle, et non la dernière ligne de la partition. Utilisez un cadre explicite non borné :
LAST_VALUE(name) OVER (
PARTITION BY group ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)Clause EXCLUDE (PG 11+)
Ignorer certaines lignes du cadre :
SUM(x) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
EXCLUDE CURRENT ROW
)
-- All previous 6 days but not today.Récapitulatif
Les clauses de cadre permettent de contrôler précisément les fenêtres.
- ROWS — nombre de lignes physiques
- RANGE — intervalle fondé sur les valeurs
- GROUPS — groupes de pairs
- Le cadre par défaut peut surprendre — soyez explicite
Vérification rapide
Vous avez des revenus quotidiens avec des jours manquants. Quel cadre donne « toutes les lignes des 7 jours calendaires précédant maintenant » ?
Questions Fréquemment Posées
La leçon « Clauses de fenêtre : ROWS ou RANGE » est-elle gratuite ?
Oui — le texte complet de « Clauses de fenêtre : ROWS ou RANGE » 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 « Clauses de fenêtre : ROWS ou RANGE » ?
Choisissez entre les clauses de fenêtre ROWS BETWEEN et RANGE BETWEEN et comprenez comment chacune gère les doublons et les intervalles manquants. 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 « Clauses de fenêtre : ROWS ou RANGE » ?
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
- Clauses de fenêtre : ROWS ou RANGE
- Lag et lead avec des fenêtres de lignes
- Regroupement avec NTILE et Cume_Dist
- Modèles de rapports du monde réel