如何使用SQL SELECT填写缺失的日期并保持值的总和?

  • 本文关键字:日期 SELECT SQL 何使用 sql presto
  • 更新时间 :
  • 英文 :


有一个表,其中包含某些日期的值:

date    |    value
-------------------------
2019-01-01 |     50
2019-01-03 |     100
2019-01-06 |     150
2019-01-08 |     20

但我希望做的是创建一个时间序列,从第一个日期到最后一个日期有一个运行总和,因此:

date    |    value
-------------------------
2019-01-01 |     50    
2019-01-02 |     50
2019-01-03 |     150   (+100)
2019-01-04 |     150
2019-01-05 |     150
2019-01-06 |     300   (+150)
2019-01-07 |     300   
2019-01-08 |     320   (+20)

唯一的约束是所有表都是read only的,所以我只能查询它们而不能修改它们。

有谁知道这是否可能?

您可以使用数组和unnest()生成日期。 其余是left join和累计总和:

select dates.dte,
sum(t.value) over (order by dates.dte)
from (values (sequence(from_iso86001_date('2019-01-01'),
from_iso86001_date('2019-01-08'),
interval '1' day
)
)
) v(date_array) cross join
unnest(v.date_array) dates(dte) left join
t
on t.date = dates.dte;

相关内容

  • 没有找到相关文章

最新更新