此查询说明 RANGE 窗口构架。汇总中使用的行数是可变的。
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;
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)