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

标签 mysql sql

<分区>

Possible Duplicate:
MySQL query that computes partial sums

好的,这个问题一点都不清楚所以例子是: 我有一张这样的 table :

id     amount

1       1000
2       2500
3       5000

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

id     oamount     total

1       1000      1000
2       2500      3500
3       5000      8500

我试过了,但不正确:

    select *,sum(oamount) from `table` 
group by id;

我想不通

最佳答案

我已经回答了一个非常相似的问题,他们试图获得每天开始/结束的现金流量余额... Found here

你的会非常相似......以你想要的最终顺序预查询数据(即:起始 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

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

关于mysql - MYSQL 如何获取当前行之前的行的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840769/

相关文章:

mysql - 测验网站的 ORM 数据库设计

php - 插入最新的行

sql - 在 where 子句中使用 select max() 函数改进 SQL 查询

sql 检测更新触发器(sql server 2005)中修改的字段?

sql - 如何在 Amazon Redshift 中更改 TABLE 以将两列设置为主键?

java - 如何检查列是否包含和Id,然后在sql中更新它?

mysql - 使用查询结果对查询进行计数

mysql - 复杂sql查询问题

mysql - HABTM 查询帮助 (Rails 3)

SQLite 和范围查询