2012-02-20 97 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