mysql-逐行累加计算总数

wz8daaqr  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(589)

我在mysql中尝试计算每天创建的用户数,然后逐行得到一个累计数字。我在这方面也采纳了其他的建议,但我似乎无法得到正确的积累。
问题是它一直从基数200开始计数,而不考虑前面的行。

我希望它能回到哪里

我的sql如下:;

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

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

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上查看这个。

3z6pesqy

3z6pesqy1#

使用子查询:

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` 还需要一个子查询。

相关问题