Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql使用sql将相邻数据平均化到新表中_Sql_Postgresql - Fatal编程技术网

Postgresql使用sql将相邻数据平均化到新表中

Postgresql使用sql将相邻数据平均化到新表中,sql,postgresql,Sql,Postgresql,下面是数据结构日期是唯一的,但可能丢失(表示跳转日期,但不为空),并且顺序不正确。如果记录数为奇数,则忽略最后一条记录 date | value | value2 -----------+-------+-------- 2017-10-11 | 10 | 0.2 2017-10-13 | 22 | 0.3 2017-10-12 | 6 | 0.0 2017-10-14 | 20 | 0.6 ... 我希望使用要合

下面是数据结构<代码>日期是唯一的,但可能丢失(表示跳转日期,但不为空),并且顺序不正确。如果记录数为奇数,则忽略最后一条记录

date       | value | value2
-----------+-------+--------
2017-10-11 |    10 |    0.2
2017-10-13 |    22 |    0.3
2017-10-12 |     6 |    0.0
2017-10-14 |    20 |    0.6
         ...
我希望使用要合并的记录的值的平均值,将最近的两个记录与新值合并。仅使用SQL

期待结果

date       | value | value2
-----------+-------+--------
2017-10-11 |     8 |    0.1
2017-10-13 |    21 |   0.45
         ...

2017-10-11 merged 2017-10-11 and 2017-10-12, i.e. value = AVG(10,6) = 8
2017-10-13 merged 2017-10-13 and 2017-10-14, i.e. value = AVG(22,20) = 21
演示


演示

这里的逻辑是什么?你试过什么?如果缺少日期怎么办?@VamsiPrabhala我不确定postgresql是否能够在没有其他语言帮助的情况下进行这种合并和平均。@VamsiPrabhala可能会缺少日期和无序,但它们是唯一的。如果表中没有日期“2017-10-12”,那么“2017-10-11”必须与“2017-10-13”合并?如果记录的数量是奇数怎么办?@Mike Yes。在这种情况下,如果没有2017-10-12,2017-10-11必须与2017-10-13合并。如果是奇数记录,只需省略最后一条记录。这里的逻辑是什么?你试过什么?如果缺少日期怎么办?@VamsiPrabhala我不确定postgresql是否能够在没有其他语言帮助的情况下进行这种合并和平均。@VamsiPrabhala可能会缺少日期和无序,但它们是唯一的。如果表中没有日期“2017-10-12”,那么“2017-10-11”必须与“2017-10-13”合并?如果记录的数量是奇数怎么办?@Mike Yes。在这种情况下,如果没有2017-10-12,2017-10-11必须与2017-10-13合并。如果是奇数记录,只需省略最后一条记录。这太棒了。这太棒了
select min(date), avg(value), avg(value2)
  from (
    select *, (row_number() over(order by date)-1)/2 grp
      from Table1
  ) X
group by grp