您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

示例:计算移动平均值

以下查询生成连续三个月的销售额的移动平均值。窗口构架的大小是三行:两个前面的行加一个当前行。窗口从分区的开始滑至结尾。

SELECT prod_id, month_num, sales, AVG(sales) OVER

(PARTITION BY prod_id ORDER BY month_num ROWS

BETWEEN 2 PRECEDING AND CURRENT ROW)

FROM sale WHERE rep_id = 1

ORDER BY prod_id, month_num;

prod_id   month_num      sales       avg(sales)

-------   ---------      ------      ----------

10                1        100          100.00

10                2        120          110.00

10                3        100          106.66

10                4        130          116.66

10                5        120          116.66

10                6        110          120.00

20                1         20           20.00

20                2         30           25.00

20                3         25           25.00

20                4         30           28.33

20                5         31           28.66

20                6         20           27.00

30                1         10           10.00

30                2         11           10.50

30                3         12           11.00

30                4          1            8.00