Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取SQL中某个日期以来的总计_Mysql_Sql - Fatal编程技术网

Mysql 获取SQL中某个日期以来的总计

Mysql 获取SQL中某个日期以来的总计,mysql,sql,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 |

我不知道如何在一列中得到自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个,2001年共3个,2003年本年度有3个,2001年和2002年共6个,依此类推,你似乎想在总数栏中加一个累计数。以下是使用相关子查询执行此操作的方法:

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;

你想用SQL来做这件事吗?列的总数在哪里?他想要所有的日期,甚至那些不存在的日期。@Mihai。谢谢你指出这一点。我错过了这个微妙之处。好吧,我喜欢这个方法,但正如前面提到的,我没有时间。我有时间戳。那么,我可以使用类似timestamp/yearinseconds+1970这样的东西来表示未排序的年份吗?@revaxarts。在人们试图回答这个问题之后再改变它是不礼貌的。您应该针对您的问题提出另一个具有适当数据的问题。你可以参考这一条,突出新问题的不同之处。@GordonLinoff对不起,我错了。我只是想有一个明确的问题。我再打开一个