累計求和三種演算法

2021-10-01 19:46:20 字數 1042 閱讀 1667

累計求和在面試和實際開發中應用比較多,是一種必須掌握的演算法,下面就給大家介紹一下累計求和的基本演算法。

演算法一:

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 的和。這是最容易的模型,不需要任何輔助陣列。...