这是数据结构。 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
答案 0 :(得分:2)
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上的演示