我写了一个查询,返回2 col如下:
(我得到count(*)
)
date total
1,2010 2
2,2010 5
3,2010 3
4,2010 7
5,2010 6
6,2010 6
我想对我得到的结果进行一些查询,这些结果将对总数进行求和,但是在每一行中它将总和到那一行,所以我会得到:
date total
1,2010 2
2,2010 7
3,2010 13
4,2010 20
5,2010 26
6,2010 32
我该怎么做?
答案 0 :(得分:0)
您可以使用用户变量来计算总和。
SELECT id, date, @t:=@t + total AS total
FROM table t1, (SELECT @t:=0) t2
ORDER BY t1.id
答案 1 :(得分:0)
您可以使用子查询和用户变量来执行此操作:
set @running_total := 0;
select date, @running_total := @running_total + total
from
(
select date,count(*) as total
from your_table
group by date
order by date
) s
order by date;
答案 2 :(得分:0)
有趣的问题,我设法通过JOIN完成任务:
mysql> select t2.date, sum(t1.total) from tt t1 join tt t2 on t1.date <= t2.date group by t2.date;
+--------+---------------+
| date | sum(t1.total) |
+--------+---------------+
| 1,2010 | 2 |
| 2,2010 | 7 |
| 3,2010 | 10 |
| 4,2010 | 17 |
| 5,2010 | 23 |
| 6,2010 | 29 |
+--------+---------------+
和原始表:
mysql> select * from tt;
+--------+-------+
| date | total |
+--------+-------+
| 1,2010 | 2 |
| 2,2010 | 5 |
| 3,2010 | 3 |
| 4,2010 | 7 |
| 5,2010 | 6 |
| 6,2010 | 6 |
+--------+-------+
答案 3 :(得分:0)
这称为累积和。标准的SQL方法是使用相关的子查询:
select t.date,
(select sum(total) from t t2 where t2.date <= t.date) as CumulativeTotal
from t
这假设日期字段可以直接比较,“2,2010”对我来说没有意义作为约会。如果这是“月,年”,那么它不是一个日期,你需要做额外的工作。我强烈建议当字符串代表日期时,你应该使用YYYY-MM或YYYY-MM-DD格式。