我应该写什么查询来计算工资表中员工的累积工资

时间:2013-09-26 18:19:40

标签: sql oracle oracle9i

给出了工资表,我们需要编写一个查询来打印员工的累积工资。 例如:

Emp  Sal
A    10
B    15
C    20
D    5


OutPut:

Emp  Sal   Cum_Sal
A    10      10
B    15      25
C    20      45
D    5       50

3 个答案:

答案 0 :(得分:2)

在某些RDBMS(如PostgreSQL或SQL Server 2012或Oracle)中,可以使用窗口函数:

select
    Emp, Sal, sum(Sal) over(order by Emp) as Cum_Sal
from employees

如果不可能,您可以使用自我加入

select
    e1.Emp, e1.Sal, sum(e2.Sal) as Cum_Sal
from employees e1
    inner join employees e2 on e2.Emp <= e1.Emp
group by e1.Emp, e1.Sal

<强> sql fiddle demo

请注意,在这两种情况下,您都必须定义滚动总和的顺序(在上面的查询中,按Emp列排序)。

答案 1 :(得分:0)

对于MS SQL,请尝试以下操作:

select NAME,SAL,sum(SAL) 
over(order by SAL rows between unbounded preceding and current row) as cum_sal 
from employee

答案 2 :(得分:-2)

enter image description here

select e.name,e.joining,sum(e_1.increment) from employee e inner join employee e_1 on e.name=e_1.name where e.joining>=e_1.joining group by e.name,e.joining

表格如下 你可以使用相同的方法