如何获取MYSQL当前行之前的行总和?

med*_*pir 4 mysql sql

可能重复:
计算部分和的MySQL查询

好的,问题根本不清楚,因此示例将是:我有一个像这样的表:

id     amount

1       1000
2       2500
3       5000
Run Code Online (Sandbox Code Playgroud)

我需要从中选择以下数据:

id     oamount     total

1       1000      1000
2       2500      3500
3       5000      8500
Run Code Online (Sandbox Code Playgroud)

我试过了,但不正确:

    select *,sum(oamount) from `table` 
group by id;
Run Code Online (Sandbox Code Playgroud)

我不知道

DRa*_*app 5

我已经回答了一个非常相似的问题,他们试图获取每天开始/结束的现金流量余额... 在这里找到

您的情况将非常相似...以所需的最终顺序对数据进行预查询(即:起始ID将是结果集的第一个),然后将所需的内容与MySQL变量一起应用

select
      PreAgg.ID,
      PreAgg.Amount,
      @PrevBal := @PrevBal + PreAgg.Amount as Total
   from 
      ( select
              YT.id,
              YT.amount
           from
              YourTable YT
           order by
              YT.id ) as PreAgg,
      ( select @PrevBal := 0.00 ) as SqlVars
Run Code Online (Sandbox Code Playgroud)

实际上,我已经将预聚合保留为查询...以防万一您想实际进行一些聚合,例如基于日常交易,或应用其他WHERE子句。这样可以灵活地确保在开始@PrevBal累积之前已准备好最终输出订单。