Presto:如何填补空白并从前几行复制值

Presto: how to fill in gap and copy value from previous rows

我有一个 table 有 2 行:

  Percent   Value  
 --------- ------- 
    99.95     230  
    99.92     130  
    99.05      94  

我想更改此设置,以便如果百分比列中存在间隙(例如 99.94、99.93、99.91...),我想使用上一行的值创建该行。例如,99.94 和 99.93 的值为 130,而 99.91 的值为 94。

窗口函数需要知道固定的偏移量,而且我认为我不能用它来填充新的 table 组更多行。

我想我可以通过生成一个数字序列 table 并与此 table 交叉连接来使其工作,但是,我不知道如何生成一个带有数字序列的虚拟 CTE 00.00 到 100.00,增量为 0.01。

任何帮助将不胜感激

正如您在问题中所建议的那样,您可以使用序列 table 来完成(通过取消嵌套 sequence function) and the lag window 函数的输出,如下所示:

WITH data(p, v) AS (VALUES
    (99.95, 230),
    (99.92, 130),
    (99.05,  94)
),
sequence(p) AS (
    SELECT x/100.00 FROM unnest(sequence(1, 10000)) t(x)
)
SELECT
   sequence.p,
   coalesce(v, lag(v) IGNORE NULLS OVER (ORDER BY sequence.p))
FROM data RIGHT JOIN sequence ON data.p = sequence.p