【发布时间】:2018-06-28 11:52:14
【问题描述】:
我正在尝试计算所有客户的累积利润,我从here 找到了一个很好的参考。但是,我的表格包含超过 1 个应该有自己的累积利润的客户。下面是我已经拥有的“客户”表。
| Year | Month | id | profit | cumulative |
| 2017 | 1 | 123 | 1000 | |
| 2017 | 2 | 123 | -200 | |
| 2017 | 3 | 123 | 500 | |
| 2017 | 1 | 456 | 500 | |
| 2017 | 2 | 456 | 100 | |
| 2017 | 3 | 456 | 200 | |
如果我使用这样的 sql 代码:
SET @csum := 0;
UPDATE client
SET cumulative = (@csum := @csum + profit);
我得到的结果是这样的:
| Year | Month | id | profit | cumulative |
| 2017 | 1 | 123 | 1000 | 1000 |
| 2017 | 2 | 123 | -200 | 800 |
| 2017 | 3 | 123 | 500 | 1300 |
| 2017 | 1 | 456 | 500 | 1800 |
| 2017 | 2 | 456 | 100 | 1900 |
| 2017 | 3 | 456 | 200 | 2100 |
我期望得到的是这样的:
| Year | Month | id | profit | cumulative |
| 2017 | 1 | 123 | 1000 | 1000 |
| 2017 | 2 | 123 | -200 | 800 |
| 2017 | 3 | 123 | 500 | 1300 |
| 2017 | 1 | 456 | 500 | 500 |
| 2017 | 2 | 456 | 100 | 600 |
| 2017 | 3 | 456 | 200 | 800 |
我也在尝试按年、月和 id 对其进行分组,但它不起作用。基本上,我想要每个月每个唯一客户的累积总和。你知道如何解决这个问题吗?提前致谢。
【问题讨论】:
-
id改变时重置总和。
标签: mysql sql sum cumulative-sum