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函數。
如下例子:
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
查詢結果如下: 
未完待續…
