从SQL中的某个日期开始获取总数

时间:2014-02-16 15:40:39

标签: mysql sql

我不知道如何在一列

中获得某一年(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年),等等

1 个答案:

答案 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;