rows between unbounded preceding and current row
【背景】
近日支撑项目上遇到“row between unbonded preceding and current row”用法,有些琢磨不透,经过自己分析后发现与lead函数功能类似,但略有不同,先将测试过程分享如下。
【说明】
如CSDN(https://blog.csdn.net/gongpulin/article/details/105091851)所说,具体含义如下:
preceding: 往前
following: 往后
current row: 当前行
unbounded: 起点(一般结合preceding,following使用)
unbounded preceding: 表示该窗口最前面的行(起点)
举例:
rows between unbounded preceding and current row: 表示从起点到当前行
rows between 2 preceding and 1 following: 表示往前2行到往后1行
rows between 2 preceding and 1 current row: 表示往前2行到当前行
rows between current row and unbounded following: 表示当前行到终点
【测试过程】
1.测试数据说明
由于本人之前从事过计量行业,因此模拟物联网采集设备采集读数作为本次测试数据,用前一天数据与后一天数据计算得到本期用量,具体数据如下:
2.建表
3.插入数据
4.使用rows between unbounded preceding and current row查询
5.lead函数查询
5.delta函数查询
IoT数仓中delta函数与lead有类似功能,具体大家若有环境可自行研究。
【总结】
1.“rows between unbounded preceding and current row” 功能可实现与lead类似功能,但使用较为复杂,没lead好理解;
2.“rows between unbounded preceding and current row”与lead不同之处在于lead最后一条数据为NULL;
3.“rows between unbounded preceding and current row”、lead、以及IoT数仓中delta函数均可实现相同功能,但前两个需要计算才可得到用量,而delta可直接得到用量,使用更简单。
- 点赞
- 收藏
- 关注作者
评论(0)