我不知道如何在一列
中获得某一年(2001年)以来的总金额我有这张桌子
ID | date
==========
1 | 2001
2 | 2001
3 | 2002
4 | 2003
5 | 2003
7 | 2003
8 | 2004
9 | 2004
10 | 2006
我想得到:
date | count | total
====================
2001 | 2 | 2
2002 | 1 | 3
2003 | 3 | 6
2004 | 2 | 8
2005 | 0 | 8
2006 | 1 | 9
基本上它说2001年有2个在当年,2个总数,2002年有1个在当年,3个在总共(从2001年),2003年有3个在当年,总共6个/从(2001年和2002年),等等
答案 0 :(得分:3)
您似乎想要total
列中的累积总和。以下是使用相关子查询执行此操作的方法:
select date, count(*) as `count`,
(select count(*) from table t2 where t2.date <= t.date) as total
from table t
where date > 2000
group by date;
编辑:
如果您想要所有日期,那么您需要生成它们并将它们加入:
select dates.date, count(*) as `count`,
(select count(*) from table t2 where t2.date <= dates.date) as total
from (select 2001 as date union all
select 2002 union all
select 2003 union all
select 2004 union all
select 2005 union all
select 2006
) dates left outer join
table t
on dates.date = t.date
where t.date > 2000
group by dates.date;