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.

Pratiquer