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

标签 sql postgresql

这是数据结构。 date 是唯一的但可能会丢失(意味着跳转日期但不是 NULL)并且乱序。如果记录数为奇数,则省略最后一条记录。

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

最佳答案

select min(date), avg(value), avg(value2)
  from (
    select *, (row_number() over(order by date)-1)/2 grp
      from Table1
  ) X
group by grp

演示 sqlfiddle.com

关于sql - Postgresql使用sql将相邻数据平均到新表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415905/

相关文章:

php - 在 Sql 请求中使用别名

c++ - Python 不调用外部程序第 3 部分

mysql - 数据库模型: Name/Value pair

sql - 在 LIKE 语句中对多个值进行序列化

php - 从 postgreSQL 到 Elasticsearch 索引大量数据(约 1200 万行)非常慢

PostgreSQL 查询 : How to get Group-By to Roll Up

python - SQLAlchemy 与 PostgreSQL 和全文搜索

sql - JSONB 到数组数据类型

sql - BEFORE 触发器可以做什么而 AFTER 触发器不能,反之亦然

sql - 有限制的分组,希望没有空集