我一直在尝试了解此查询的执行情况,该查询使用自连接计算运行总和。我试图想象,但我认为它实际上应该从下往上开始,而不是从上往下开始。这意味着所有工资的总和应该首先出现,然后它会随着 ID 的数量而减少。
我错了吗?或者缺少任何概念?
表:emp_details
id | 名字 | 工资 |
---|---|---|
1 | 什里帕德 | 10000 |
2 | 萨提亚 | 1400 |
3 | 贾 | 500 |
4 | 大卫 | 1800 |
5 | 迈克尔 | 3000 |
6 | 阿尔文德 | 2400 |
7 | 阿莎 | 4200 |
8 | 玛丽亚姆 | 3500 |
9 | 瑞诗玛 | 2000 |
10 | 阿克谢 | 2500 |
SELECT *,
(
SELECT SUM(T2.[SALARY])
FROM emp_details AS T2
WHERE T2.[ID] <= T1.[ID]
) AS [Running Total]
FROM emp_details AS T1
如果您需要递减总和,只需将条件
T2.[ID] <= T1.[ID]
反转为T2.[ID] >= T1.[ID]
,这样它就会对当前项之后(包括当前项)的所有项目求和。