【问题标题】:Filling NULL values with previous NON-NULL values in SQL (Athena)在 SQL (Athena) 中用以前的 NON-NULL 值填充 NULL 值
【发布时间】:2022-01-13 11:52:11
【问题描述】:

我有以下示例表(我使用的是 AWS Athena):

我想添加一个新的/覆盖当前会话字段,这样 NULL 将被之前的 NON NULL 值填充。结果表应如下所示:

【问题讨论】:

    标签: sql null amazon-athena lag


    【解决方案1】:

    您可以在lag 窗口函数的当前值和结果上使用coalesceignore nulls 选项:

    WITH dataset( date, event, value) AS (
        values 
            (date '2021-07-24', 'a', null),
            (date '2021-07-25', 'b', 4),
            (date '2021-07-26', 'c', null),
            (date '2021-07-27', 'c', 5),
            (date '2021-07-28', 'a', null),
            (date '2021-07-29', 'b', null)
    )
    
    SELECT date,
        event,
        coalesce(
            value,
            lag(value) ignore nulls over(order by date)
        ) value
    FROM dataset
    

    输出:

    date event value
    2021-07-24 a
    2021-07-25 b 4
    2021-07-26 c 4
    2021-07-27 c 5
    2021-07-28 a 5
    2021-07-29 b 5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多