给出了工资表,我们需要编写一个查询来打印员工的累积工资。 例如:
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
答案 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)
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
表格如下 你可以使用相同的方法