Sql 如何对每个项目的所有行求和?
关于我先前的问题 我需要计算每个项目的价值总和Sql 如何对每个项目的所有行求和?,sql,oracle,Sql,Oracle,关于我先前的问题 我需要计算每个项目的价值总和 Col | Col A | Col B Item1 1 | 1 (col A) Item1 2 | 3 (colA + prevColB) Item1 3 | 6 (colA + prevColB) Item2 1 | 1 (colA) Item2 4 | 5 (colA + prevColB) Item2 3 | 8
Col | Col A | Col B
Item1 1 | 1 (col A)
Item1 2 | 3 (colA + prevColB)
Item1 3 | 6 (colA + prevColB)
Item2 1 | 1 (colA)
Item2 4 | 5 (colA + prevColB)
Item2 3 | 8 (colA + prevColB)
SQL表表示无序集。您的累计总和假定表的顺序,这在问题中并不明显
累积和的语法为:
select t.*
sum(cola) over (partition by col order by ?) as colb
from t;
?
用于表示行顺序的列(或表达式)。列是第一项,您可以尝试下面的方法
select col, sum(col A), sum( col B) from tb group by col
按列从tb组中选择列、和(列A)、和(列B)
享受它broh如果您只是指前一行的值(但不是总的总和),那么使用
lag
函数,该函数给出前一行的列值,如以下SQL所示:
。SQL表表示无序集。除非列指定了顺序,否则不存在“previous”行。
select colA, colA+
lag(colA,1,0) over (partition by Col order by Col ) as ColB
from tab;
COLA COLB
1 1
2 3
3 5
1 1
4 5
3 7