我有这张桌子:
员工编号 | 经验 | 薪水 |
---|---|---|
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
会起作用?
试试这个
SELECT employee_id
, experience
, salary
, SUM(salary) OVER(ORDER BY experience, salary,employee_id) as cumsum
FROM Candidates