小编Cra*_*aig的帖子

SQL - 自事件发生以来的衰减时间然后从下一个事件开始

已经发布了许多类似的问题和答案,但我找不到具有这些差异的问题和答案。1) NULL 计数重新开始,2) 有一个数学函数应用于替换的值。

事件要么发生,要么不发生(NULL 或 1),按客户的日期。可以假设客户对于每个日期只有一行。

我想用基于连续 NULL 数量(事件时间)的衰减函数替换 NULL。客户可以每天参加活动、跳过一天、跳过多天。但一旦事件发生,衰退就会重新开始。目前我的衰减除以 2,但这只是举例。

DT 顾客 事件 期望的
2022-01-01 A 1 1
2022-01-02 A 1 1
2022-01-03 A 1 1
2022-01-04 A 1 1
2022-01-05 A 1 1
2022-01-01 1 1
2022-01-02 0.5
2022-01-03 0.25
2022-01-04 1 1
2022-01-05 0.5

我可以产生想要的结果,但它非常笨拙。看看有没有更好的办法。这需要针对多个事件列进行扩展。

create or replace temporary table the_data (
  dt date,
  customer char(10),
  event int,
  desired float)
;
insert into the_data values ('2022-01-01', 'a', 1, 1);
insert into …
Run Code Online (Sandbox Code Playgroud)

sql missing-data snowflake-cloud-data-platform

4
推荐指数
1
解决办法
136
查看次数