Mysql累積求和

2021-08-20 08:25:29 字數 1802 閱讀 4274

1、樣例表表結構

show create table event_attractnew_daily_invitation_201805;

create table `event_attractnew_daily_invitation_201805` (

`id` int(11) unsigned not null auto_increment comment '主鍵 id',

`uid` bigint(20) not null comment '使用者 uid',

`count` int(11) not null default '0' comment '邀請人數',

`effective_count` int(11) not null default '0' comment '有效邀請人數',

`amount` decimal(20,6) not null default '0.000000' comment '賺取金額',

`daily_date` date not null comment '日期',

`created_time` datetime not null comment '建立時間',

`updated_time` datetime not null comment '更新時間',

primary key (`id`),

unique key `idx_daily_uid` (`daily_date`,`uid`),

key `index_amount_time` (`amount`,`created_time`)

) engine=innodb auto_increment=5278 default charset=utf8mb4 comment='現金拉新活動每天邀請記錄表';

2、累積求和sql

select a1.daily_date,a1.uid,a1.count,a1.effective_count,sum(a2.count) accumulate_count,sum(a2.effective_count) accumulate_effective_count

from event_attractnew_daily_invitation_201805 a1

join event_attractnew_daily_invitation_201805 a2 on a1.uid=a2.uid and a1.daily_date>=a2.daily_date

group by a1.daily_date,a1.uid,a1.count,a1.effective_count

order by a1.uid,a1.daily_date;

3、說明

在oralce及hive上有非常方便的分析函式可以解決此類問題,但mysql就要其他途徑曲線實現。

只考慮一列累積求和的樣例:

create table cum_demo

(id int,money int,primary key (id));

insert into cum_demo(id,money)

values (1,10),(2,20),(3,30),(4.40);

select a.id,a.money,sum(lt.money) as cum

from cum_demo a join cum_demo lt

on a.id >= lt.id

group by a.money

order by id;

python 使用pandas計算累積求和的方法

使用pandas下的cumsum函式 cumsum 計算軸向元素累積加和,返回由中間結果組成的陣列.重點就是返回值是 由中間結果組成的陣列 import numpy as np arr是乙個2 2 3三維矩陣,索引值為0,1,2 cumsum 0 實現0軸上的累加 以最外面的陣列元素為單位,以 1,...

c 上機實驗四 分數的累積求和

一 問題及 檔名稱 c 上機實驗4 分數的累加 作 者 張琪 完成日期 2016 年 4 月 21 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 程式設計序,輸出1 3 3 5 5 7 7 9 19 21的和 程式輸出 求和結果 問題分析 略 演算法設計 略 三 心得...

Accumulation Buffer(累積快取)

累積快取是為合成多幅影象而設計的,它不是簡單的用引入象素片元來代替象素值,而是將片元進行縮放,然後加到已有的象素值上。為了經過一系列的混合操作後能夠保持精度,累積快取每個顏色分量的位數要比一般的視覺化系統要多。我們可以象其他快取一樣清空累積快取,可以用glclearaccum 來設定紅 綠和藍色分量...