This query illustrates the RANGE window frame. The number of rows used in the summation is variable.
SELECT prod_id, month_num, sales, SUM(sales) OVER (PARTITION BY prod_id ORDER BY month_num RANGE BETWEEN 1 FOLLOWING AND 3 FOLLOWING) FROM sale ORDER BY prod_id, month_num;
The results from the above query:
prod_id month_num sales sum(sales) ------- --------- ----- ---------- 10 1 100 350 10 1 150 350 10 2 120 381 10 3 100 391 10 4 130 261 10 5 120 110 10 5 31 110 10 6 110 (NULL) 20 1 20 85 20 2 30 86 20 3 25 81 20 4 30 51 20 5 31 20 20 6 20 (NULL) 30 1 10 25 30 2 11 14 30 3 12 2 30 4 1 (NULL) 30 4 1 (NULL)