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该行。