MySQL 累计和对多行产生相同的值

问题描述 投票:0回答:1

我有这张桌子:

员工编号 经验 薪水
1 初级 10000
9 初级 15000
2 高级 20000
11 高级 16000
13 高级 50000
4 初级 40000

我正在尝试获得按经验和薪水排序的薪水累计总和。

我的代码:

SELECT employee_id, experience, salary, SUM(salary) OVER(ORDER BY experience, salary) as cumsum
FROM Candidates

基本上我想要这个输出:

员工编号 经验 薪水 总和
11 高级 16000 16000
2 高级 20000 36000
13 高级 50000 86000
1 初级 10000 96000
9 初级 15000 111000
4 初级 40000 151000

但我得到的是这个:

员工编号 经验 薪水 总和
11 高级 16000 16000
2 高级 20000 36000
13 高级 50000 151000
1 初级 10000 151000
9 初级 15000 151000
4 初级 40000 151000

编辑: 薪水是独一无二的

此代码有效:

SELECT employee_id, experience, salary, SUM(salary) OVER(ORDER BY experience, salary ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumsum
FROM Candidates

为什么添加

 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumsum
会起作用?

mysql sql window-functions cumulative-sum
1个回答
0
投票

试试这个

SELECT   employee_id
       , experience
       , salary
       , SUM(salary) OVER(ORDER BY experience, salary,employee_id) as cumsum
FROM Candidates
© www.soinside.com 2019 - 2024. All rights reserved.