我正在嘗試運行一個查詢,該查詢獲取我的一個表中某列的累積和。它看起來像這樣: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