【问题标题】:SQL to get cumulative salaries of all employees till the current monthSQL获取所有员工到当月的累计工资
【发布时间】:2021-04-05 11:36:14
【问题描述】:

假设我们在 Employee_Info 表中有三名员工:

Emp_Name Month salary
emp1 2021-01 10000
emp1 2021-02 13000
emp1 2021-03 10000
emp2 2021-01 15000
emp2 2021-02 15000
emp2 2021-03 12000
emp3 2021-01 20000
emp3 2021-02 20000
emp3 2021-03 13000

我必须编写一个 select sql 查询,其输出如下:

Emp_Name Month salary
emp1 2021-01 10000
emp1 2021-02 13000
emp1 2021-03 10000
emp1 2021-03 33000
emp2 2021-01 15000
emp2 2021-02 15000
emp2 2021-03 12000
emp2 2021-03 42000
emp3 2021-01 20000
emp3 2021-02 20000
emp3 2021-03 13000
emp3 2021-03 53000

如您所见,新行应包含特定员工的所有工资总和。

【问题讨论】:

  • 我只是想不出为什么这会是一个有用的查询结果

标签: mysql sql select


【解决方案1】:

可能最简单的方法就是使用union all

select emp_name, month, salary
from t
union all
select emp_name, max(month), sum(salary)
from t
group by emp_name
order by emp_name, month, salary;

注意,如果你想要每一行的累计工资,那么你可以使用窗口函数:

select t.*,
       sum(salary) over (partition by emp_name order by month) as running_salary
from t;

Here 是一个 dbfiddle。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多