累計求和在面試和實際開發中應用比較多,是一種必須掌握的演算法,下面就給大家介紹一下累計求和的基本演算法。
演算法一:
teradata資料庫自帶一種算累計求和的函式:csum()函式
csum(求和字段,排序字段)
select name
,date_mon
,salary
,csum(salary,date_mon) as sumsal
from table_a
group by name
table_a
name
date_mon
salary
sumsal
jack
201901
100100
jack
201902
120220
jack
201903
150370
jack
201904
80450
jack
201905
200650
演算法二(mysql 沒有該種用法):
select name,date_mon,salary,sum(salary) over(partition by name order by date_mon asc) as sumsal from table_a
演算法三(mysql 沒有該種用法,mysql中tmp可以單獨建立):
with tmp as (select name,date_mon,salary,row_number() over(partition by name order by date_mon asc) as rn
from table_a)
select a.name,a.date_mon,a.salary,sum(b.salary)
from tmp a
left join tmp b
on a.name = b.name
and a.rn <= b.rn
group by a.name,a.date_mon,a.salary
樹狀陣列區間求和三種模型
樹狀陣列在區間求和問題上有大用,其三種複雜度都比線段樹要低很多 有關區間求和的問題主要有以下三個模型 以下設a 1.n 為乙個長為n的序列,初始值為全0 1 改點求段 型,即對於序列a有以下操作 修改操作 將a x 的值加上c 求和操作 求此時a l.r 的和。這是最容易的模型,不需要任何輔助陣列。...
迴圈求和 三種迴圈語句實現
利用迴圈求和 求1000以內所有偶數的和 如下 include includeusing namespace std 利用 for 迴圈語句實現 int for result return sum 利用 do while 語句實現 int do while result while i 1000 w...
樹狀陣列區間求和三種模型
樹狀陣列在區間求和問題上有大用,其三種複雜度都比線段樹要低很多 有關區間求和的問題主要有以下三個模型 以下設a 1.n 為乙個長為n的序列,初始值為全0 1 改點求段 型,即對於序列a有以下操作 修改操作 將a x 的值加上c 求和操作 求此時a l.r 的和。這是最容易的模型,不需要任何輔助陣列。...