3

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

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
4

3 回答 3

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列排序的)。

于 2013-09-26T18:23:44.783 回答
0

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

select NAME,SAL,sum(SAL) 
over(order by SAL rows between unbounded preceding and current row) as cum_sal 
from employee
于 2019-01-19T14:02:27.973 回答
-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

表如下所示,您可以使用相同的方法

于 2016-04-24T12:43:15.507 回答