在SQL中计算窗口平均值而无分区或按列排序

时间:2019-02-05 03:48:33

标签: sql window-functions

如果我的数据框在特定的固定时间间隔内只有点击次数,如下所示:

1
3
4
2
6
1

我想用上面的5行计算他们的滚动平均值,这是合法的吗?

  

选择AVG(value)OVER(按1 ASC ROWS 4 PRECEDING排序)as avg_value   来自df GROUP BY 1

或者应该是

  

选择AVG(值)超过(以1 ASC行第4开头)   df GROUP BY 1的avg_value

1 个答案:

答案 0 :(得分:0)

您似乎想要:

SELECT df.*,
       AVG(value) OVER (ORDER BY datetimecol ASC
                        ROWS 4 PRECEDING
                       ) AS avg_rolling_5
FROM df;

注意:

  • 滚动平均要求意味着对数据进行排序。 datetimecol用于表示该顺序的列。
  • 滚动平均值是针对原始数据的,而不是汇总数据,因此不需要order by
  • SQL数据库具有,而不是 dataframes