如何解决Teradata 基于前一行创建日期范围窗口
Teradata 数据库
我对此进行了粗略的处理。我有一个数据集,我想创建一个客户旅程。规则是第一笔交易是一次旅程。至少 30 天后的下一笔交易是一次旅程。至少 30 天后的下一笔交易也是一次旅程。我无法访问编程,只能进行常规查询。
有几种情况。 客户在数据集中只有 1 个交易。由于它是唯一的,因此将其标记为旅程。
客户在 5 天内进行了 2 笔交易。第一个是旅程,第二个不是,因为它是在 30 天内。
客户有 2 笔交易。 1/1 和 2/5。它们相隔 > 30 天,因此每个都被标记为一次旅程。
客户有 3 笔交易。 1/1、1/8、2/5。第一个和第三个是旅程,第二个不是(因为它在之前标记的旅程的 30 天窗口内)。
我已经尝试了所有方法,但似乎总有一些情况不起作用。
我有可以写下来的逻辑,但我不知道如何在 teradata 中做到这一点。
- 如果 trans_idx=1,则旅程标志 = y
- 如果日期 - 前一个 trans_idx 日期 > 30,则 travel_flag = Y
- 这是我能做到的。我无法为以下逻辑获取正确的 sql。如果日期 - 前一个 trans_idx 日期
这有效,但它只比较前一行。如果我将其更改为无界,它将查看给定序列的所有行 - 我只需要它返回到前 30 天结束。
WHEN RUNNING_SUM_FLOAT=0 THEN 'Y'
WHEN RUNNING_SUM_FLOAT - MIN(RUNNING_SUM_FLOAT)
OVER (partition by sequence_id ORDER BY trans_idx
ROWS BETWEEN 1 PRECEDING and 1 PRECEDING) >=30
THEN 'Y'
ELSE 'N'
END as journey_flag
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。