1、建表
create table EMP
(
DEPTNO NUMBER(4),
ENAME VARCHAR2(20),
SAL NUMBER(10))
insert into emp (DEPTNO,ENAME,SAL) values (1,'CLARK',2450);
insert into emp (DEPTNO,ENAME,SAL) values (2,'SMITH',3000);
insert into emp (DEPTNO,ENAME,SAL) values (3,'ALLEN',1250);
insert into emp (DEPTNO,ENAME,SAL) values (4,'JAMES',950);
select *from EMP;
2、逐行累加
select t.deptno,t.sal,sum(t.sal) over (order by t.deptno) AccuSal from emp t;
可以看到:
第一行的ACCUSAL=第零行的SAL+第一行的SAL (2450)
第二行的ACCUSAL=第一行的SAL+第二行的SAL(2450+3000=5450)
第三行的ACCUSAL=第一行的SAL+第二行的SAL+第三行的SAL(2450+3000+1250=6700)
***
3、本行减去上一行
select DEPTNO, ENAME,SAL,sal - LAG(sal, 1, 0) OVER(order by DEPTNO asc) diff
from emp order by DEPTNO asc;
第一行的DIFF=第一行的SAL-第零行的SAL (2450)
第二行的DIFF=第二行的SAL-第一行的SAL(3000-2450=550)
第三行的DIFF=第三行的SAL-第二行的SAL(1250-3000=-1750)
***