可以使用MySQL的用户定义变量和内置函数来计算历史累计值。
假设有一个表叫 “sales”,包含以下字段:
- id (INT)
- date (DATE)
- sales_amount (DECIMAL)
现在想要计算每一天的历史累计销售额。可以按照以下步骤进行操作:
- 使用ORDER BY将数据按日期排序
SELECT * FROM sales ORDER BY date;
- 使用用户定义变量 @total_sales 来保存累计总销售额,并使用内置函数 IFNULL() 避免第一行出错
SET @total_sales := 0;
SELECT id, date, sales_amount, (@total_sales := @total_sales + IFNULL(sales_amount, 0)) AS cumulative_sales
FROM sales
ORDER BY date;
这个查询会返回以下结果:
| id | date | sales_amount | cumulative_sales |
|---|---|---|---|
| 1 | 2020-01-01 | 100 | 100 |
| 2 | 2020-01-02 | 200 | 300 |
| 3 | 2020-01-03 | NULL | 300 |
| 4 | 2020-01-04 | 150 | 450 |
| 5 | 2020-01-05 | NULL | 450 |
| 6 | 2020-01-06 | 300 | 750 |
注意:如果销售额为NULL,则累计销售额不会增加。




