SELECT SUM(SUM(a)) OVER (ORDER BY b ROWS UNBOUNDED PRECEDING)
FROM ...
GROUP BY b ...
SUM(COUNT(a))
est également valide.
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;
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).