Mysql - Накопительный подсчет суммы построчно - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь в MySql подсчитать количество пользователей, созданных каждый день, а затем получить накопленную цифру построчно. Я следовал за другими предложениями здесь, но я не могу понять, что накопление было правильным.

Проблема в том, что он продолжает считать с базового числа 200 и не учитывает предыдущие строки.

Output

Где бы я мог ожидать его возвращения

enter image description here

Моя площадь следующая;

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 .

1 Ответ

0 голосов
/ 26 апреля 2018

Использовать подзапрос:

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 также требуется подзапрос.

...