我需要开发一个执行以下操作的SQL查询:
Column A Column B
Row1 2861682 sum(Row1 to Row5)
Row2 2522226 sum(Row2 to Row5)
Row3 2285983 sum(Row3 to Row5)
Row4 2096046 sum(Row4 to Row5)
Row5 1935355 sum(Row5)
这是我在表格列中的数据。
现在我需要计算
sum(Row1 to Row5)
sum(Row2 to Row5)
sum(Row3 to Row5)
sum(Row4 to Row5)
sum(Row5)
由于
答案 0 :(得分:3)
此标准SQL表单使用相关子查询:
select t.*,
(select sum(B)
from t t2
where t2.A >= t.A
) as TheSum
from t;
某些数据库还支持允许累积总和的窗口/分析函数。
编辑:
Netezza是使用窗口功能支持累积总和的数据库之一(感谢其Postgres遗产,我想)。您也可以将其表达为:
select t.*,
sum(B) over (order by A desc) as TheSum
from t
编辑II:
我没有要测试的Netezza数据库,但它确实有RowId
列。你也许可以使用它,虽然我找不到任何保证单调增加的文档。事实上,我很确定对于并行加载,rowid将不被单调分配。
查询看起来像:
select t.*,
sum(B) over (order by rowid desc) as TheSum
from t