1、lag()
LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
select id
,addtime
,lag(addtime,1,'1999.01.01') over(partition by id order by addtime);
from table1;
2、lead()
与LAG相反LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
select id
,addtime
,lead(addtime,1,'1999.01.01') over(partition by id order by addtime);
from table1;
3、first_value()
取分组内排序后,截止到当前行,第一个值
select id
,addtime
,first_value(id) over(partition by id order by addtime)
from table1;
4、last_value()
取分组内排序后,截止到当前行,最后一个值
select id
,addtime
,last_value(id) over(partition by id order by addtime)
from table1;
注意:先分区,接下来整体排序,然后取截止到当前行的最后一个还是第一个,不是直接取整体的第一个/最后一个