我尝试在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上查看此内容。
答案 0 :(得分:1)
使用子查询:
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
也需要子查询。