使用自连接运行总和

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

我一直在尝试了解此查询的执行情况,该查询使用自连接计算运行总和。我试图想象,但我认为它实际上应该从下往上开始,而不是从上往下开始。这意味着所有工资的总和应该首先出现,然后它会随着 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
sql
1个回答
0
投票

如果您需要递减总和,只需将条件

T2.[ID] <= T1.[ID]
反转为
T2.[ID] >= T1.[ID]
,这样它就会对当前项之后(包括当前项)的所有项目求和。
例如,第一行 T1.ID=1 按条件 T2.ID >= 1 对所有行都成立,对整个表进行求和。

© www.soinside.com 2019 - 2024. All rights reserved.