首页 > 解决方案 > 运行总计,但使用常量而不是当前行添加前一行

问题描述

我有一个如下表,其中包含一些初始值:

日期 价值 持续的
2020-02-01 10 0.25
2020-03-01 0.25
2020-04-01 0.50
2020-05-01 0.25
2020-06-01 0

我正在寻找如下输出:

日期 新值 持续的
2020-02-01 10 0.25
2020-03-01 10.25 0.25
2020-04-01 10.50 0.50
2020-05-01 11.0 0.25
2020-06-01 11.25 0

这就像一个运行总计,但我不想添加前一行值,而是添加另一列中的值。知道如何实现吗?

标签: mysqlsqlpresto

解决方案


在 MySQL 8+ 上,我们可以使用SUM

SELECT
    date,
    SUM(value) OVER (ORDER BY date) +
    SUM(constant) OVER (ORDER BY date
                        ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS new_value,
    constant
FROM yourTable
ORDER BY date;

推荐阅读