我正在尝试运行一个查询,该查询获取我的一个表中某列的累积和。它看起来像这样:SQL中的累积和
set @csum := 0;
select order_date, Amount, (@csum := @csum + Amount) as cumulative_sum
from Orders
order by order_date
但是,运行此操作时,我得到cumulative_sum的所有NULL。什么是我“在做错误的感谢
我正在尝试运行一个查询,该查询获取我的一个表中某列的累积和。它看起来像这样:SQL中的累积和
set @csum := 0;
select order_date, Amount, (@csum := @csum + Amount) as cumulative_sum
from Orders
order by order_date
但是,运行此操作时,我得到cumulative_sum的所有NULL。什么是我“在做错误的感谢
我建议只是在做?!
select order_date, Amount, sum(Amount) as cumulative_sum
from Orders
order by order_date
如果你需要存储在变量中的值,那么你可以这样做:
SELECT @Variable = sum(Amount)
from Orders
也许添加一个GroupBy
如果你想总结每天的金额
对不起,如果我不清楚。您提供的上述查询将只给出一行,总和所有金额。我想要的是随着时间的推移而累积的总和,所以如果数量是1,5,7,10,那么累计栏应该是1,6,13,23。 – user1072337
我猜Amount
有时可能是NULL
。试试这个版本于:
select o.order_date, o.Amount,
(@csum := @csum + coalesce(o.Amount, 0)) as cumulative_sum
from Orders o cross join
(select @csum := 0) params
order by o.order_date;
为什么不只是做总和(金额)为cumulative_sum .... – BrianAtkins
它发生,我认为,如果你不明确声明'@ csum',它可能会被初始化为INT,和'金额'可能是 - 什么,小数?试试'set @csum:= 0.0;' –
Mike K,100%正确。我如何将它声明为INT(如果我不想要小数) – user1072337