微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle中的累积计算

如何解决Oracle中的累积计算

我在Emp下面有一个包含三列(empno,ename,salary)的表。

empno  ename   salary 
---------------------
 101   Ram     2000
 102   Kumar   1000
 103   Mani    3000

我需要通过在上表中显示Cumulative_Salary来在下面的输出

Empno Ename  Cumulative_Salary
-------------------------------
101   Ram    2000
102   Kumar  3000
103   Mani   6000

解决方法

您正在寻找SUM OVER

select 
  empno,ename,salary,sum(salary) over(order by empno) as cumulative_salary
from emp
order by empno;

通过在ORDER BY empno子句中应用OVER,我们可以隐式应用RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,但是如果您愿意的话,您当然可以使其明确。

文档:cronguru

,
    select 
      empno,sum(salary) as cumulative_salary
    from emp
    group by
      empno,ename
    order by empno;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。