Mysql如何将列与前一列和求和

时间:2014-06-16 17:12:56

标签: mysql sql math xls

在XLS中,我有两列A和B。

A,B

1,1
2,3
2,5
1,6
5,11
2,13

列有值,B列用公式计算,(A +(前一行B值))

我如何在MYSQL上进行此计算?

我试图加入同一张桌子两次,然后我就可以获得B之前的一行。

我可以总结一下,但我怎样才能用这个公式加以总结?

XLS公式如下所示:

H20 = H19+G20

这是我根据建议创建的SQL。

SELECT 
    date, time, sum, @b := sum+@b as 'AccSum', count 
FROM 
   (SELECT 
        t.date, t.time, t.sum, t.count 
    FROM TMP_DATA_CALC t 
    ORDER BY t.epoch) as tb
CROSS JOIN
    (SELECT @b := 0) AS var
;

3 个答案:

答案 0 :(得分:2)

SELECT A, @b := A+@b AS B
FROM (SELECT A
      FROM YourTable
      ORDER BY id) AS t
CROSS JOIN
    (SELECT @b := 0) AS var

用户变量@b保存前一行的B值,允许您将当前行的A添加到其中。

DEMO

答案 1 :(得分:0)

http://sqlfiddle.com/#!2/74488/2/1显示了如何选择数据。

SET @runtot:=0;
Select a,b, @runtot:=@runtot+a from b 

然而,我无法弄清楚存在潜在的问题。由于您没有已定义的订单,因此SQL可以以任何方式执行此排序,因此您可能无法获得所需的结果。如果没有定义的订单,您的结果可能无法预测。

runtot =跑步总数。

答案 2 :(得分:0)

在MySQL中,我们没有像Oracle那样的分区功能。您可以使用光标来满足您的要求。或者我们可以编写任何将rownumber作为输入的函数,然后添加这两个值然后返回查询。

从xsl中选择b限制rownum-1,1 +从xsl limit rownum中选择一个,1