本文整理自网络,侵删。
排列(rank())函数。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力,下面以scott用户的emp表为例来说明rank over partition如何使用。
1)查询员工薪水并连续求和
select deptno,ename,sal, sum(sal)over(order by ename) sum1, sum(sal)over() sum2, 100* round(sal/sum(sal)over(),4) "bal%" from emp
结果如下:
DEPTNO ENAME SAL SUM1 SUM2 bal%
---------- ---------- ---------- ---------- ---------- ----------
20 ADAMS 1100 1100 29025 3.79
30 ALLEN 1600 2700 29025 5.51
30 BLAKE 2850 5550 29025 9.82
10 CLARK 2450 8000 29025 8.44
20 FORD 3000 11000 29025 10.34
30 JAMES 950 11950 29025 3.27
20 JONES 2975 14925 29025 10.25
10 KING 5000 19925 29025 17.23
30 MARTIN 1250 21175 29025 4.31
10 MILLER 1300 22475 29025 4.48
20 SCOTT 3000 25475 29025 10.34
DEPTNO ENAME SAL SUM1 SUM2 bal%
---------- ---------- ---------- ---------- ---------- ----------
20 SMITH 800 26275 29025 2.76
30 TURNER 1500 27775 29025 5.17
30 WARD 1250 29025 29025 4.31
2)如下:
select deptno,ename,sal, sum(sal)over(partition by deptno order by ename) sum1, sum(sal)over(partition by deptno) sum2, sum(sal)over(partition by deptno order by sal) sum3, 100* round(sal/sum(sal)over(),4) "bal%" from emp
结果如下:
相关阅读 >>
oracle sql developer连接报错(ora-12505)的解决方案(两种)
centos 7.4下安装oracle 11.2.0.4数据库的方法
更多相关阅读请进入《oracle》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。