【问题标题】:How to take previous non-null value in sequence?如何按顺序取先前的非空值?
【发布时间】:2021-09-18 02:23:56
【问题描述】:

DB 是 Presto。假设我有一张桌子{id dim1, dim2, seq, value}。 seq 是 value 的序列号,value 包含 NULL。我有:

select
id,
dim1,
dim2,
seq,
value,
"value_backfilled" -- Want to compute this
from table
group by id, dim1, dim2
order by id, dim1, dim2, seq

在选择中,我想用序列中的最后一个非空值“回填”value。 例如,在特定分组中,values 是 [1, null, null, null, 2, null, null, 3, null, null, null],我希望它是 [1, 1, 1, 1 , 2, 2, 2, 3, 3, 3, 3]

【问题讨论】:

    标签: sql presto trino


    【解决方案1】:

    Presto 支持IGNORE NULLS,所以你似乎想要:

    select lag(value ignore nulls) over (order by id)
    

    如果值一直在增加,也可以使用max():

    select max(value) over (order by id)
    

    注意:如果您想要每个维度组合,那么您可以添加 partition by。

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多