本文共 1059 字,大约阅读时间需要 3 分钟。
移动平均值的定义:若依次得到测定值(x1,x2,x3,…xn)时,按顺序取一定个数所做的全部算数平均值。例如(x1+x2+x3)/3,(x2+x3+x4)/3,(x3+x4+x5)/3,…就是移动平均值。其中,x可以是日或者月,以上的可以成为3日移动平均,或3月移动平均,常用于股票分析中。
avg(字段名) over(partition by 字段名 order by 字段名 asc/desc rows between A and B )-- A和B是计算的行数范围
rows between 2 preceding and current row # 取当前行和前面两行rows between unbounded preceding and current row # 包括本行和之前所有的行rows between current row and unbounded following # 包括本行和之后所有的行rows between 3 preceding and current row # 包括本行和前面三行rows between 3 preceding and 1 following # 从前面三行和下面一行,总共五行当order by后面缺少窗口从句条件,窗口规范默认是rows between unbounded preceding and current row.当order by和窗口从句都缺失, 窗口规范默认是 rows between unbounded preceding and unbounded following
SELECT *, AVG(grade) OVER(ORDER BY stu_no ROWS BETWEEN 2 preceding AND CURRENT ROW) AS '三移动平均'FROM v_info
对于第一行来说,没有前面两行,所以值就为当前行的值
对于第二行来说,前面只有一行,所以三移动平均就为第一行和第二行的平均值 影响行数范围的语句在标准的聚合函数中都适用。