Mysql - 逐行累计计算总数

Mysql - Accumulatively count the total on a row by row basis

我正在尝试在 MySql 中计算每天创建的用户数,然后逐行得出一个累计数字。我在这里遵循了其他建议,但我似乎无法使积累正确。

问题是它一直从基数 200 开始计数,而不考虑前面的行。

我希望它去哪里 return

我的Sql如下;

SELECT day(created_at), count(*), (@something := @something+count(*)) as value
FROM myTable
CROSS JOIN (SELECT @something := 200) r
GROUP BY day(created_at);

要创建 table 并填充它,您可以使用;

CREATE TABLE myTable (
  id INT AUTO_INCREMENT,
  created_at DATETIME,
  PRIMARY KEY (id)
);

INSERT INTO myTable (created_at) 
            VALUES ('2018-04-01'),
             ('2018-04-01'),
             ('2018-04-01'),
             ('2018-04-01'),
             ('2018-04-02'),
             ('2018-04-02'),
             ('2018-04-02'),
             ('2018-04-03'),
             ('2018-04-03');

您可以在 SqlFiddle 上查看此内容。

使用子查询:

SELECT day, cnt, (@s := @s + cnt)
FROM (SELECT day(created_at) as day, count(*) as cnt
     FROM myTable
     GROUP BY day(created_at)
    ) d CROSS JOIN
    (SELECT @s := 0) r;

GROUP BY 和变量已经很久没有一起工作了。在更新的版本中,ORDER BY 还需要一个子查询。