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

如上所述是我的表“用户”的一些字段。我想要按日期分组的总用户数和累积计数。我在 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 日以来的累积用户计数”。是否可以获取上述修改后的查询或更好地在代码中处理?请建议。

4

2 回答 2

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
于 2013-08-13T14:13:50.333 回答
0

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

您可以按 MONTH(yourDate) 对结果进行分组,也可以过滤 MONTH(yourDate) = 8 的原始数据。如果您的数据运行多年,请小心,因为月份 = 8 的所有日期都将被累积。然后,您可以添加基于 YEAR(yourDate) 的排序/过滤标准

于 2013-08-13T13:37:13.720 回答