从员工表中找到薪水总额

时间:2019-12-06 06:55:14

标签: sql

我正在数据库中存储数据,如下所示。

Emp_id Ename Sal 
11      AAA   10
22      BBB   20
33      CCC   30
44      DDD   60

然后我要填充一个新列,如下所示。

Emp_id Ename Sal  New_column
11      AAA   10    10  --> 10+0
22      BBB   20    30  --> 10+20
33      CCC   30    60  --> 10+20+30
44      DDD   60    120 --> 10+20+30+60

谢谢您的协助!

4 个答案:

答案 0 :(得分:2)

只要您的RDBMS不支持分析功能(例如,因为您使用的是MySQL 5.7或更早版本),我们还可以使用相关子查询来查找运行总计:

SELECT
    Emp_id,
    Ename,
    Sal,
    (SELECT SUM(t2.Sal) FROM yourTable t2 WHERE t2.Emp_id <= t1.Emp_id) AS New_column
FROM yourTable t1
ORDER BY
    Emp_id;

答案 1 :(得分:0)

我想你想要连续的金额。如果您的数据库产品支持窗口功能,则可以尝试以下操作-

SELECT Emp_id
      ,Ename
      ,Sal 
      ,SUM(Sal) OVER(ORDER BY EMP_ID) New_column
FROM EMPLOYEE;

答案 2 :(得分:0)

如果可以在DBMS中使用Window分析功能,请使用:

select t.*, sum(sal) over (order by emp_id) as New_column 
  from tab t
 order by emp_id 

答案 3 :(得分:0)

请在下面的查询中使用SQL Server中正在运行的聚合。

SELECT Emp_id
    ,Ename
    ,Sal
    ,SUM(Sal) OVER (
        ORDER BY Emp_id
        ) AS New_column
FROM Employee
ORDER BY Emp_Id