2012-02-20 96 views
0

我有一個表date, subs, unsubs,其中date是PK,subsunsubs是該日期的訂閱和取消訂閱的數量。SQL計算部分數據的SUM

我想增加一列來計算每一天的總用戶數,也就是說,如果數據排序,subsall = subsall最後一排+ subs的 - unsubs

例如:該表是

---------------- 
2012-01-01, 5, 2 
2012-01-02, 6, 1 
2012-01-03, 4, 3 
---------------- 

我想添加一個新的列和表變爲

------------------- 
2012-01-01, 5, 2, 3 
2012-01-02, 6, 1, 8 
2012-01-03, 4, 3, 9 
------------------- 

什麼是MySQL命令這樣做呢?

回答

1

您正在尋找累積和。試試這個:

SELECT date, subs, unsubs, (@csum := @csum + subs - unsubs) cumulative 
FROM table, (SELECT @csum :=0) c 
ORDER BY date 
0

你可以只選擇兩列的差異,並給它「subsall」像這樣的一個別名:

SELECT date, subs, unsubs, (subs - unsubs) as 'subsall' FROM table

+0

這隻計算每天的差異。我需要彙總以前的行。 – DrXCheng 2012-02-20 18:31:08

+0

我完全不理解你的問題......你想要每一個新的行都有當前的子數? – 2012-02-20 18:32:40

0
SELECT (COUNT(subs) - COUNT(unsubs)) as total subscribers from table 
GROUP BY DATE_FORMAT(date, '%d-%m-%Y') 

希望這適用於你。

+0

這絕對是不正確的。 – DrXCheng 2012-02-20 18:31:48