日期:2014-05-16 浏览次数:20462 次
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该行。
?
?