Oracle 分析函数之 lag和lead
2016-08-03 08:57
330 查看
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 t.* from test1 t;
/*用lag,lead分析以后的数据*/
select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,
lead(t.name,1,0) over(order by id desc) min_v
from TEST1 t;
/*满足查询结果的数据*/
select i.* from(select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,
lead(t.name,1,0) over(order by id desc) min_v
from TEST1 t) i where i.name='3aa';
这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率。
/*语法*/
lag(exp_str,offset,defval) over()
Lead(exp_str,offset,defval) over()
--exp_str要取的列
--offset取偏移后的第几行数据
--defval:没有符合条件的默认值
举例说明:
/*基础数据*/
select t.* from test1 t;
/*用lag,lead分析以后的数据*/
select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,
lead(t.name,1,0) over(order by id desc) min_v
from TEST1 t;
/*满足查询结果的数据*/
select i.* from(select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,
lead(t.name,1,0) over(order by id desc) min_v
from TEST1 t) i where i.name='3aa';
相关文章推荐
- [Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
- Oracle高级查询之LAG和LEAD分析函数
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle分析函数lag/lead不能计算日期型数据?
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle 统计分析函数之lead和lag
- Oracle分析函数之lag和lead 分析函数详解
- Oracle分析函数总结(2) - 排序 - rank,dense_rank,row_number,first,first_value,last,last_value,lag,lead
- [Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
- oracle 分析函数lag 和 lead 简介
- oracle 分析函数 LAG、LEAD
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- Oracle下lag和lead分析函数
- oracle lag与lead分析函数简介
- [Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
- 【转】oracle lag与lead分析函数简介
- oracle lag与lead分析函数简介
- Oracle的LAG和LEAD分析函数
- Oracle的LAG和LEAD分析函数