Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-截断日期上的滚动平均值_Sql_Postgresql_Aggregate Functions_Amazon Redshift - Fatal编程技术网

SQL-截断日期上的滚动平均值

SQL-截断日期上的滚动平均值,sql,postgresql,aggregate-functions,amazon-redshift,Sql,Postgresql,Aggregate Functions,Amazon Redshift,我想用精度在第二位的数据,对一个计算字段进行一周的滚动平均。这就是为什么我第一次将日期截断为周 所以我的临时问题是 SELECT week, AVG(my_value) OVER(ORDER BY week ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS avg_my_value FROM (SELECT id, DATE_TRUNC('week', created_at) AS week,

我想用精度在第二位的数据,对一个计算字段进行一周的滚动平均。这就是为什么我第一次将日期截断为周

所以我的临时问题是

SELECT week, AVG(my_value) OVER(ORDER BY week ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS avg_my_value 
FROM
    (SELECT id, 
           DATE_TRUNC('week', created_at) AS week,
           my_value
    FROM my_table
    ORDER BY week ASC
    ) 
GROUP BY week
我的问题是,平均值工作,但它的所有行都有相同的一周单独完成!我认为这是因为必须添加某种内部分组,但我的问题是将其设想为平均数


如果这很重要,我正在寻找一种适用于红移或PostgreSQL的解决方案。

如果您想要一个累积平均值,那么:

SELECT week,
       AVG(AVG(my_value)) OVER (ORDER BY week ASC) AS avg_my_value 
FROM (SELECT id,  DATE_TRUNC('week', created_at) AS week, my_value
      FROM my_table
     ) t
GROUP BY week;
注:

  • 子查询中的排序依据是多余的
  • 注意聚合函数的嵌套

窗口函数中的前一行和当前行之间缺少frame子句行。还有,为什么我需要做一个平均数的平均数?@martin。Postgres(以及几乎所有其他数据库)不需要该子句。Amazon Redshift可能仍然需要带有
orderby
的windowing子句。确实如此。平均数是多少?做一个单一的平均值和先平均同一周的所有值,然后计算到该周的滚动平均值是不同的。@martin。您可以使用非常类似的逻辑来获取值之和除以计数之和。这将是总体平均值,而不是每周平均值的平均值。是的,确实做到了!不过,我们的目标是一个具有纯AVG功能的单一解决方案。这根本不可能吗?