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 累积总和取决于类型的主要内容,如果未能解决你的问题,请参考以下文章

按日期分组的 MySQL 累积总和

最近 n_days 使用 groupby 在特定列上的累积总和

获取具有不同类型和名称的特定ID mysql的总和

具有累积聚合样式的 HKQuantityType 月份的统计信息

取决于其他相同字段的Mysql行值总和[关闭]

MySQL数据类型--------枚举与集合类型实战