ORACLE逐行累计求和方法(OVER函数)
ORACLE逐⾏累计求和⽅法(OVER函数)
sql over的作⽤及⽤法
1.RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可实现按指定的字段分组排序,对于相同分组字段的结果集进⾏排序,
其中PARTITION BY 为分组字段,ORDER BY 指定排序字段
2.over不能单独使⽤,要和分析函数:rank(),dense_rank(),row_number()等⼀起使⽤。
其参数:over(partition by columnname1 order by columnname2)
含义:按columname1指定的字段进⾏分组排序,或者说按字段columnname1的值进⾏分组排序。
解决实际问题:(实现统计功能中常⽤)
1)问题描述:⽐如查询记录有5⾏,每⾏记录有⼀个数值型的字段。第2⾏为第1、2⾏的和;第3⾏为第1、2、3⾏的和;第4⾏为第1、2、3、4⾏的和;后⾯依此类推……
2)解决办法:使⽤Oracle⾃带的Over函数。
如下例⼦:rank函数的用法
1.建测试表EMP
– Create table
create table employee
(
DEPTNO NUMBER(4),
ENAME VARCHAR2(20),
SAL NUMBER(10)
);
2.插⼊测试数据
insert into employee (DEPTNO,ENAME,SAL) values (0001,’CLARK’,2450);
insert into employee (DEPTNO,ENAME,SAL) values (0002,’SMITH’,3000);
insert into employee (DEPTNO,ENAME,SAL) values (0003,’ALLEN’,1250);
insert into employee (DEPTNO,ENAME,SAL) values (0004,’JAMES’,950);
查询结果如下:
3.编写SQL(⽤Over函数)
select deptno,
sal,
sum(sal) over (order by deptno) AccSal
from employee
查询结果如下:
未完待续…

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。