如何从月开始累积计数在mysql中开始

时间:2013-08-13 13:34:10

标签: mysql sql

ID              int(11)       (NULL)             NO      PRI     (NULL)            
CREATED_DATE    datetime      (NULL)             YES             (NULL)                                   

如上所述是我的表'User'中的一些字段。我想要按日期分组的总用户数和累计数。我在mysql中使用以下查询。

SELECT q1.CREATED_DATE,q1.NO_OF_USER, (@runtot := @runtot + q1.NO_OF_USER) AS   CUMM_REGISTRATION FROM (SELECT date(CREATED_DATE) AS CREATED_DATE,
   COUNT(ID) AS NO_OF_USER FROM  USER,(SELECT @runtot:=0) AS n GROUP  BY CREATED_DATE ORDER  BY CREATED_DATE) AS q1

哪个工作正常。现在我想要一个额外的数据,这将是'8月1日以来的累积用户数'。是否有可能获取上述修改上面的查询或更好地处理代码?请建议。

2 个答案:

答案 0 :(得分:1)

您可以通过添加另一个变量并在代码中执行此操作来完成此操作:

SELECT q1.CREATED_DATE, q1.NO_OF_USER,
       (@runtot := @runtot + q1.NO_OF_USER) AS CUMM_REGISTRATION,
       @Aug1tot := if(CREATED_DATE >=date('2013-08-01'), @Aug1tot + q1.NO_OF_USER, NULL) as CUMM_SINCE_Aug1
FROM (SELECT date(CREATED_DATE) AS CREATED_DATE,
             COUNT(ID) AS NO_OF_USER
      FROM  USER cross join
            (SELECT @runtot:=0, @Aug1tot := 0) n
      GROUP  BY date(CREATED_DATE)
      ORDER  BY date(CREATED_DATE);
     ) AS q1

答案 1 :(得分:0)

我猜你在mySQL中有一些名为MONTH(yourDate)的函数,其中MONTH(2013年8月15日)将返回8。

您可以按MONTH(yourDate)对结果进行分组,也可以过滤MONTH(yourDate)= 8的原始数据。请注意,如果您的数据沿多年运行,因为将累计月份= 8的所有日期。然后,您可以根据YEAR(yourDate)

添加排序/过滤标准