Totaux cumulés
Syntaxe : Total cumulé
SUM(SUM(a)) OVER (ORDER BY b ROWS UNBOUNDED PRECEDING)
permet de calculer la somme cumulée des "a" selon l'évolution "b".
On notera que "b" doit être un attribut de regroupement.
Remarque :
SUM(COUNT(a))
est également valide.
Exemple :
CTRL+C pour copier, CTRL+V pour coller
1
SELECT d.sem, SUM(COUNT(*)) OVER (ORDER BY d.sem ROWS UNBOUNDED PRECEDING)
2
FROM ventes v, date d
3
WHERE v.dat=d.dat
4
GROUP BY d.sem;
SELECT d.sem, SUM(COUNT(*)) OVER (ORDER BY d.sem ROWS UNBOUNDED PRECEDING) FROM ventes v, date d WHERE v.dat=d.dat GROUP BY d.sem;
Complément :
Notons qu'il est possible de "fenêtrer" les données, c'est à dire de définir une plage de valeurs bornée, en spécifiant une fenêtre de valeurs à l'aide de la clause "RANGE min max" à la place de "ROWS UNBOUNDED PRECEDING".
Le fenêtrage de données est particulièrement utile dans le cas de données temporelles (cf. Oracle 9i : Notions fondamentales[1]).