
窗口函数-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 一起使用,如 确定用户最后一次登录时间
|
|
胡子叔叔的小站