窗口函数-Positional Functions
Contents
以 “计算当前和上一次事件的时间间隔” 引入 positional function
截止到目前,窗口函数整理了聚合、排序场景,解决了“组内占比”、“定位连续3天登录用户”等问题
在平时的分析工作中,还有个比较常见的问题:计算当前和上一次事件的时间间隔。比如,相邻两次外呼的时间间隔
这个时候,lead()
或 lag()
函数可较为方便的解决该类问题
实现的功能
lead()
, lag()
实现的功能比较类似。
lead()
上移
|
|
lag()
下移
|
|
基本语法
|
|
lead()
, lag()
中的3个参数:
-
expression
- string被操作的列名
-
offset
- int移动的行数(/偏移量)
-
default_value
定义为空的情况赋给的默认值
其中,参数 expression
是必须的。而 default_value
(默认是 NULL
) 是只有当 offset
(默认是 1
) 有值时才能使用
over()
语句中,order by
是必须要有的
应用
计算用户相邻两次登录的天数间隔
|
|
窗口函数还有俩常见的:first_value()
, last_value()
,在此就略过了。
有时候可以用 row_number() over()
结合 having
一起使用,如 确定用户最后一次登录时间
|
|