Fonctions de fenêtrage : OVER
Calculer sur plusieurs lignes sans les regrouper. OVER indique quelles lignes examiner, comme RANK et les totaux cumulés dans Excel.
Syntaxe
ROW_NUMBER() OVER (ORDER BY column)RANK() OVER (ORDER BY column)SUM(column) OVER (PARTITION BY column ORDER BY column)
- PARTITION BY recommence le calcul pour chaque groupe.
- Contrairement à GROUP BY, chaque ligne reste dans le résultat.
Exemple
SELECT order_id, RANK() OVER (ORDER BY order_date) AS day_rank FROM orders;
Chaque commande avec son rang par date. Les commandes d'un même jour partagent un rang.
Tables utilisées : orders. Essayez-le dans une leçon ci-dessous.
Erreurs courantes
- ROW_NUMBER donne à chaque ligne un numéro différent ; RANK donne le même numéro aux ex aequo et saute les suivants.
- Les fonctions de fenêtrage s'exécutent après WHERE, donc vous ne pouvez pas utiliser leurs résultats dans WHERE. Encapsulez la requête dans une sous-requête ou un WITH pour filtrer sur ces résultats.