【发布时间】:2022-01-02 18:19:42
【问题描述】:
所以我试图在一组数字上实现间隙和孤岛问题,这里有一个例子:
0 0 3 4 5 6 6 7 7 8 11 12 18 22
这是一个累积和,所以数字不能减少。我需要做的是按照这些规则将各个记录分成组:
- 组中的第一个(也是最小的)数字是“前导”数字
- 只有当一个数字的大小不超过某个数字(本例中假设为 7)时,它才能与其前导数字在同一组中
- 第一个超过
leading number + 7的数字是下一组的前导数字
因此,对于上面显示的示例,组将是:
0 0 3 4 5 6 6 7 7
8 11 12
18 22
这几乎就像一个数字除以差距,然后得到一个组号,但由于一组中的最后一个数字与下一组中的领先数字之间的差距可以是任何正数,这会得到更多随着序列的增长,更不正确。我尝试了case when sum(...) over(...) > 7 then sum(...) else 0 end,但它会影响不在第一组中的每个数字,所以我不知道如何再处理这个问题。任何帮助,将不胜感激!如果这很重要,表在雪花中
【问题讨论】:
标签: sql snowflake-cloud-data-platform gaps-and-islands