MySQL 累积总和取决于类型
Posted
技术标签:
【中文标题】MySQL 累积总和取决于类型【英文标题】:MySQL cumulative sum depending on type 【发布时间】:2021-06-08 17:30:07 【问题描述】:使用 mysql 我有这个表: 1
我要做的是按日期累计汇总“montant”列,但如果我添加的行的类型为 CONTRIBUTION,我将其保持为正数,如果该行的类型为 WITHDRAW,我将其设为负数。
因此我应该得到:
2021-03-10 10200 (100+2600-2500+10000)
2021-03-11 7700 (10200-2500)
我希望我说清楚了我想要做什么。
我做了这个查询,可能已经关闭:
select cast(date as date) as d, (select sum(montant) from jackpot where type='CONTRIBUTION' and cast(date as date) = d) - (select sum(montant) from jackpot where type=' WITHDRAW' 和 cast(date as date) = d ) as value from jackpot GROUP by cast(date as date);
但它给了我这个结果
【问题讨论】:
【参考方案1】:嗯。 . .使用条件聚合来获得正确的总和。使用累积和窗口函数获得运行总和:
select date(date),
sum(case when type = 'CONTRIBUTION' then montant
when type = 'WITHDRAW' then -montant
end) as sum_on_date,
sum(sum(case when type = 'CONTRIBUTION' then montant
when type = 'WITHDRAW' then -montant
end)
) over (order by date(date)) as running_sum
from jackpot
group by date(date);
【讨论】:
以上是关于MySQL 累积总和取决于类型的主要内容,如果未能解决你的问题,请参考以下文章
最近 n_days 使用 groupby 在特定列上的累积总和