使用整体列向mysql请求添加行

时间:2015-02-10 12:47:19

标签: php mysql sql select

我在向一个相对较大的SELECT请求添加整体递增行时遇到了麻烦。 该表看起来像:

+-----------+------------+
|   Date    |   Amount   |
+-----------+------------+
| 10:11:15  |     25     |
| 10:11:25  |     150    |
| 10:11:35  |     120    |
| 10:11:45  |      90    |
| 10:11:55  |     100    |
+-----------+------------+

我想添加一个新列,其中包含当时的总量,例如:

+-----------+------------+------------+
|   Date    |  Amount    |  Overall   |
+-----------+------------+------------+
| 10:11:15  |     25     |     25     |
| 10:11:25  |     150    |    175     |
| 10:11:35  |     120    |    295     |
| 10:11:45  |      90    |    385     |
| 10:11:55  |     100    |    485     |
+-----------+------------+------------+

该表按时间排序,因此最后一行将显示该时间戳之前的总量。 找不到任何解决方案,如果你能提供帮助,我会很高兴,所以我不需要硬编码。

2 个答案:

答案 0 :(得分:0)

使用子选项对项目+所有旧项目求和。

select Date, amount, (select sum(amount) from yourtable
                      where date <= t1.date) as Overall
from yourtable as t1

或者通过以下方式加入群组:

select t1.Date, t1.amount, sum(t2.amount)
from yourtable as t1 join yourtable as t2 on t2.date <= t1.date
group by t1.date, t1.amount

答案 1 :(得分:0)

两个地方:

1,数据引擎:

你可以编写像GetOverall_ForThisROw()这样的函数 只需sum()where PKsome ID < something

2,编程语言:

你可以将它放在你的PHP代码中,我认为这可以保存数据库。

在我看来,从数据库中获取原始数据,然后在你的php中运行一个简单的代码将为你提供最佳性能。