Oracle中的累积计算

时间:2020-10-19 15:17:28

标签: sql select oracle9i

我在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

2 个答案:

答案 0 :(得分:0)

您正在寻找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

答案 1 :(得分:0)

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