lag lead 学习
2014-01-16 23:01
141 查看
lag lead 语法如下:
![](https://img-blog.csdn.net/20140116224552859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmNfbG9i/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140116224558890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmNfbG9i/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值
lag(exp_str,offset,defval) over()
exp_str 是要做对比的字段
offset 是exp_str字段的偏移量 比如说 offset 为3 则 拿exp_str的第一行和第四行对比,第二行和第五行,依次类推,offset的默认值为1!
defval是当该函数无值可用的情况下返回的值。Lead函数的用法类似。
--lag(exp_str),如下:
select ename,job,sal ,lag(sal) over(order by sal) last_sal from emp;
--lead如同
select ename,job,sal ,lead(sal) over(order by sal) last_sal from emp;
--lad(sal,1,100) over(order by sal) sal向前便宜1,null值会被100填充
select ename,job,sal ,lag(sal,1,100) over(order by sal) last_sal from emp;
--lead(sal,1,100) over(order by sal) 向后偏移1
select ename,job,sal ,lead(sal,1,100) over(order by sal) last_sal from emp;
--偏移2如下
select ename,job,sal ,lag(sal,2) over(order by sal) last_sal from emp;
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值
lag(exp_str,offset,defval) over()
exp_str 是要做对比的字段
offset 是exp_str字段的偏移量 比如说 offset 为3 则 拿exp_str的第一行和第四行对比,第二行和第五行,依次类推,offset的默认值为1!
defval是当该函数无值可用的情况下返回的值。Lead函数的用法类似。
--lag(exp_str),如下:
select ename,job,sal ,lag(sal) over(order by sal) last_sal from emp;
ENAME | JOB | SAL | LAST_SAL | |
1 | SMITH | CLERK | 800 | |
2 | JAMES | CLERK | 950 | 800 |
3 | ADAMS | CLERK | 1100 | 950 |
4 | WARD | SALESMAN | 1250 | 1100 |
5 | MARTIN | SALESMAN | 1250 | 1250 |
6 | CLARK | MANAGER | 1300 | 1250 |
7 | MILLER | CLERK | 1300 | 1300 |
8 | TURNER | SALESMAN | 1500 | 1300 |
9 | ALLEN | SALESMAN | 1600 | 1500 |
10 | BLAKE | MANAGER | 2850 | 1600 |
11 | JONES | MANAGER | 2975 | 2850 |
12 | SCOTT | ANALYST | 3000 | 2975 |
13 | FORD | ANALYST | 3000 | 3000 |
14 | KING | PRESIDENT | 5000 | 3000 |
select ename,job,sal ,lead(sal) over(order by sal) last_sal from emp;
ENAME | JOB | SAL | LAST_SAL | |
1 | SMITH | CLERK | 800 | 950 |
2 | JAMES | CLERK | 950 | 1100 |
3 | ADAMS | CLERK | 1100 | 1250 |
4 | WARD | SALESMAN | 1250 | 1250 |
5 | MARTIN | SALESMAN | 1250 | 1300 |
6 | CLARK | MANAGER | 1300 | 1300 |
7 | MILLER | CLERK | 1300 | 1500 |
8 | TURNER | SALESMAN | 1500 | 1600 |
9 | ALLEN | SALESMAN | 1600 | 2850 |
10 | BLAKE | MANAGER | 2850 | 2975 |
11 | JONES | MANAGER | 2975 | 3000 |
12 | SCOTT | ANALYST | 3000 | 3000 |
13 | FORD | ANALYST | 3000 | 5000 |
14 | KING | PRESIDENT | 5000 |
select ename,job,sal ,lag(sal,1,100) over(order by sal) last_sal from emp;
ENAME | JOB | SAL | LAST_SAL | |
1 | SMITH | CLERK | 800 | 100 |
2 | JAMES | CLERK | 950 | 800 |
3 | ADAMS | CLERK | 1100 | 950 |
4 | WARD | SALESMAN | 1250 | 1100 |
5 | MARTIN | SALESMAN | 1250 | 1250 |
6 | CLARK | MANAGER | 1300 | 1250 |
7 | MILLER | CLERK | 1300 | 1300 |
8 | TURNER | SALESMAN | 1500 | 1300 |
9 | ALLEN | SALESMAN | 1600 | 1500 |
10 | BLAKE | MANAGER | 2850 | 1600 |
11 | JONES | MANAGER | 2975 | 2850 |
12 | SCOTT | ANALYST | 3000 | 2975 |
13 | FORD | ANALYST | 3000 | 3000 |
14 | KING | PRESIDENT | 5000 | 3000 |
select ename,job,sal ,lead(sal,1,100) over(order by sal) last_sal from emp;
ENAME | JOB | SAL | LAST_SAL | |
1 | SMITH | CLERK | 800 | 950 |
2 | JAMES | CLERK | 950 | 1100 |
3 | ADAMS | CLERK | 1100 | 1250 |
4 | WARD | SALESMAN | 1250 | 1250 |
5 | MARTIN | SALESMAN | 1250 | 1300 |
6 | CLARK | MANAGER | 1300 | 1300 |
7 | MILLER | CLERK | 1300 | 1500 |
8 | TURNER | SALESMAN | 1500 | 1600 |
9 | ALLEN | SALESMAN | 1600 | 2850 |
10 | BLAKE | MANAGER | 2850 | 2975 |
11 | JONES | MANAGER | 2975 | 3000 |
12 | SCOTT | ANALYST | 3000 | 3000 |
13 | FORD | ANALYST | 3000 | 5000 |
14 | KING | PRESIDENT | 5000 | 100 |
select ename,job,sal ,lag(sal,2) over(order by sal) last_sal from emp;
ENAME | JOB | SAL | LAST_SAL | |
1 | SMITH | CLERK | 800 | |
2 | JAMES | CLERK | 950 | |
3 | ADAMS | CLERK | 1100 | 800 |
4 | WARD | SALESMAN | 1250 | 950 |
5 | MARTIN | SALESMAN | 1250 | 1100 |
6 | CLARK | MANAGER | 1300 | 1250 |
7 | MILLER | CLERK | 1300 | 1250 |
8 | TURNER | SALESMAN | 1500 | 1300 |
9 | ALLEN | SALESMAN | 1600 | 1300 |
10 | BLAKE | MANAGER | 2850 | 1500 |
11 | JONES | MANAGER | 2975 | 1600 |
12 | SCOTT | ANALYST | 3000 | 2850 |
13 | FORD | ANALYST | 3000 | 2975 |
14 | KING | PRESIDENT | 5000 | 3000 |
相关文章推荐
- 学习IRC
- IronPython学习 之hello word.
- 导出数据到excel的三种方法 的学习
- LUA学习笔记1-Functions
- DB2基础学习
- ubuntu学习笔记(之一)
- Ubuntu——Linux在学校上网……娱乐、学习一个都不误!
- MonoRail学习笔记六:Filter功能使用
- Java事件驱动模型学习(JList)
- [转]十天学习PHP之第二天(PHP)----掌握php的流程控制
- c++学习笔记-------《c++自学通》第十二章 高级引用和指针
- JSON学习[整理]
- 学习C++和编程的50个观点
- 学习与思考
- Call指令和Ret指令讲解05 - 零基础入门学习汇编语言52
- struts2 学习备忘
- 瓷砖地图学习笔记
- 设计模式学习笔记-组合模式
- JBox2d入门学习二 -----我的小鸟
- CPP学习备忘[3] 计算表达及函数机制