运行 总计,但将前一行添加为常量而不是当前行

Running total but add previous row with a constant instead of current row

我有一个像下面这样的 table,带有一些初始值:

date value constant
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

我正在寻找如下输出:

date new_value constant
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

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

在 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;

您可以使用window函数sum,如下所示:

select date,
       sum(coalesce(value,0) + constant) over (order by date) as constant
  from t;