lag和lead函数可以在同一次查询中取出同一字段的前N行数据(lag)和后N行数据(lead)。

这种字段可以使用对相同表的表连接来实现,不过使用lag和lead函数具有更高的效率。

语法:

LAG(EXP_STR,OFFSET,DEFVAL)OVER()

LEAD(EXP_STR,OFFSET,DEFVAL)OVER()
EXP_STR:要取的列
OFFSET: 取偏移后的第几行数据
DEFVAL:没有符合条件的默认值
 

代码示例:

 select ename,job,sal ,lag(sal,1) over(order by sal) last_sal from emp;

last_sal列为sal列向前偏移了1行,并且未设置默认值,故第一行数据为空。

select ename,job,sal ,lag(sal,1,3.1415) over(order by sal) last_sal from emp;

last_sal列的第一行由于向前偏移了1行,并且设置默认值为3.1415,故第一行数据为3.1415。

select ename,job,sal ,LEAD(sal,1) over(order by sal) last_sal from emp;

将lag替换成lead,last_sal列为sal列向后偏移了1行,并且未设置默认值,故最后一行数据为空。

 

 

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐