日期:2014-05-16  浏览次数:20477 次

Oracle中over()函数的使用

oracle中over() 函数用法? ,将自己的研究结果记录一下。

?

个人理解:over() 函数 是对 分析函数的一种条件解释,直接点就是 给分析函数加条件吧。

?

例如:

SQL

select deptno,ename,sal,sum(sal) over(partition by deptno) from emp

?

deptno,ename,sal,sum(sal) over(partition by deptno)

1?8?涂平?4000.00?27000
2?8?涂飞平?5000.00?27000
3?8?tuping?4000.00?27000
4?8?tuping ?4000.00?27000
5?8?涂飞平?3000.00?27000
6?8?涂平?4000.00?27000
7?8?ganggang?3000.00?27000
8?32?wuweiling?2000.00?6000
9?32?wuweiling?2000.00?6000
10?32?吴蔚玲?2000.00?6000

?

注意最后一列,他首先是将所有的部门按编号分类,分类以后,将所有部门号相同的SAL进行累加,然后显示在于该部门号对应的记录后面,例如27000是所有8号部门的工资总和,那么在所有8号部门的该列都是27000

?

SQL

select deptno,ename,sal,sum(sal) over(order by ename) from emp

?

1?8?ganggang?3000.00?3000
2?8?tuping ?4000.00?7000
3?32?wuweiling?2000.00?11000
4?32?wuweiling?2000.00?11000
5?32?吴蔚玲?2000.00?13000
6?8?涂小3平?5000.00?21000
7?8?涂小3平?3000.00?21000
8?8?涂平?4000.00?29000
9?8?涂平?4000.00?29000

?

最后一列显示的是按名字进行排序,进行工资累积求和,名字相同人的工资,首先相加,然后再和上一名字人的工资相加。

例如:

ganggang --3000

tuping --4000

加起来等于7000

两个wuweiling 是2000+2000=4000 然后和7000相加=11000,然后显示在wuweiling该行。

?

?