資料庫拉鍊表算平均值

2021-10-01 21:05:55 字數 1226 閱讀 5686

實際開發中我們會遇到下面這種需求,一張拉鍊表算客戶的日均餘額,看圖:

下面是一張客戶餘額拉鍊表,求客戶a01的2023年06月01日至2023年05月31日的日均餘額。

table_a

custmoerid

amtstart_dt

end_dt

a011000

2018-03-01

2018-05-24

a011100

2018-05-24

2018-11-12

a011020

2018-11-12

2019-03-01

a01820

2019-03-01

2019-04-25

a011320

2019-04-25

2019-06-08

a012320

2019-08-03

2019-10-07

a012020

2019-10-07

2019-11-12

a012090

2019-11-12

2019-12-28

a011500

2019-12-28

9999-12-31

select customerid,sum(amt*(datediff(end_dt,start_dt)))/datediff('2019-05-31','2018-06-01')

from (

select customerid,amt

,case when start_dt <= date('2018-06-01') then '2018-06-01' else start_dt end as start_dt

,case when end_dt>=date('2019-05-31') then '2019-05-31' else end_dt end as end_dt

from table_a

where start_dt<=date('2019-05-31') and end_dt >= date('2018-06-01')) a

group by customerid;

注意事項:

1.注意限制條件,開始日期要小於等於限制日期的最大值,結束時間要大於等於時間限制的最小值

2.當最小日期在某條記錄的開始和結束日期之間,將該條記錄的開始日期設為最小日期,當最大日期在某條記錄的開始和結束日期之間,將該條記錄的結束日期設為最大日期。

資料庫拉鍊算後記 不帶刪除的拉鍊演算法

之前的拉鍊演算法中 該演算法流水表中標識需要刪除的資料時,是通過修改表記錄中帳號狀態來表示資料刪除的,實際上在向近源模型層載入時只發生了增 改兩種狀態。當在近源模型層搜尋所有有效賬戶時候,被 刪除 的記錄的end date也是3000 12 31,所以搜尋到的有效記錄中包含了標識為被刪除的記錄。故該...

Pandas 資料操作求平均值 資料去重

我們有一組從 2006 年到2016 年1000 部最流行的電影資料 我們想知道這些電影資料中 評分的平均分 導演的人數,演員人數等資訊,我們應該怎麼獲取?資料資訊如下 rank 1000 non null int64 title 1000 non null object genre 1000 no...

求vector中的資料之和與平均值

向量 vector 是乙個封裝了動態大小陣列的順序容器 sequence container 在c 中vector應用較多,那如何求取vector中資料的和與均值呢?當然,我們可以利用最直接的迴圈來做 即利用vector.size 但是有沒有簡單方法呢,答案是肯定的。可利用如下函式進行處理,舉乙個簡...