gpt4 book ai didi

sql - 使用 Snowflake SQL 用最近的非 null 填充值

转载 作者:行者123 更新时间:2023-12-05 00:54:40 25 4
gpt4 key购买 nike

这是我的值表

id    category   

A Apple
A NULL
A Apple
B NULL
B Pear
B Pear
B Peach
B NULL
B NULL
C NULL
C NULL
C Apple

这就是我想要的 table

id    category   

A Apple
A Apple
A Apple
B NULL
B Pear
B Pear
B Peach
B Peach
B Peach
C NULL
C NULL
C Apple

这些是我要应用的规则;

  • 如果 category 为 null,则填写最新的类别(针对该 id)
  • 如果该 id 的上述类别没有值,则保持为空

我们可以想象有第三列称为日期,这就是数据的排序依据

我尝试使用 first_value() 但我只是得到了类别列的空值

我在 Snowflake 实例上使用 SQL

最佳答案

你似乎想要 lag(...ignore nulls)。只有一件事:SQL 表代表 无序 集(技术上是多集)。您需要一列来指定顺序。

所以:

select t.*,
coalesce(lag(category ignore nulls) over (partition by id order by <ordering col>) as imputed_category
from t;

实际上,last_value() 不需要 coalesce() 就可以做到这一点:

select t.*,
last_value(category ignore nulls) over (partition by id order by <ordering col>) as imputed_category
from t;

关于sql - 使用 Snowflake SQL 用最近的非 null 填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65783571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com