一、LAG与LEAD
LAG(col,n,default) 用于统计窗口内往上第n行值
第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
LEAD与LAG相反 ,LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
例子:获取用户这次下单与下次会话的时间,统计时间差
select session_id, user_id, session_create_time,
LEAD(session_create_time,1) over (order by session_create_time asc) as next_row
from dwb.dwb_pulsar_c_inappropriate_hour
where user_id = '1105835577';
获取上一次与这一次下单的间隔时间
select session_id, user_id, session_create_time,
LEAD(session_create_time,1) over (order by session_create_time asc) as next_row,
datediff(LEAD(session_create_time, 1) over(order by session_create_time asc),session_create_time) as diff_days
from dwb.dwb_pulsar_c_inappropriate_hour
where user_id = '1105835577';