sql—用滞后、过量和不确定的偏移量填充数据集的空行?

4szc88ey  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(296)

所有人。我第一次在这里发帖。我找了一些粘性线程,可能会告诉我一些“嘿,做这个之前,你发布的第一次”的信息,但我可能错过了它。所以,问题是:
我正在构建一个用于分析的数据集,并尝试填充一些空行。我不知道这是否是最好的方法,但我认为我需要延迟这个数据集的分区。以下是表格示例:

我的目标是让bidend字段中的所有空值都用上面最近的单元格填充。因此,第1-4行都将填充2020-01-03。最终目标是能够将所有行标记为有效或无效。如果出价开始发生在出价结束之后,那么它将无效。数据集将需要对所有客户执行此操作,然后对该客户下分组的所有bid\u id执行此操作。
我更喜欢使用代码和一个实际的例子,但是我不被允许分享这些信息,所以我已经尽可能地重新创建场景。抱歉,如果让人困惑的话。

vdgimpew

vdgimpew1#

在标准sql中,您将使用 lag(ignore nulls) :

select t.*,
       lag(bidend ignore nulls) over (partition by customer2 order by row)
from t;

虽然是标准的sql,但并不是所有的数据库都支持 ignore nulls 选项开启 lag() . 这就是为什么标记数据库很重要。
实际上,看起来你每个人都有一个值 customer2 / bid_id 一对。如果这是真的,你可以用 max() :

select t.*,
       max(bidend) over (partition by customer2, bid_id)
from t;

相关问题