在Snowflake中根据days列中断递增获取首尾日期
问题与解决
原始数据
| id | days | date |
|---|---|---|
| 1 | 7 | 1/1/2023 |
| 1 | 8 | 1/2/2023 |
| 1 | 9 | 1/3/2023 |
| 1 | 0 | 1/4/2023 |
| 1 | 0 | 1/5/2023 |
需求
当days列停止按1递增时,提取id=1对应的起始日期和结束日期。
处理逻辑
- 锁定
id=1的所有记录,按date升序排列(原始数据已满足排序要求) - 逐行校验
days列的连续性:当前行days值需等于上一行days + 1 - 首次出现不满足连续递增的记录时,取前一段连续数据的首尾日期作为结果
最终结果
id=1对应的起始日期为1/1/2023,结束日期为1/3/2023
内容的提问来源于stack exchange,提问作者MDYETI
相关产品推荐
相关产品推荐

