Я пытаюсь сделать кумулятивный подсчет регистрации моих пользователей, мои данные похожи на это:
User_ID Creation Date
2 11-02-2017
3 10-25-2017
4 10-22-2017
5 10-20-2017
6 10-14-2017
7 10-02-2017
8 10-01-2017
Я хочу запрос, который бы отображал количество пользователей, которые были зарегистрированы до каждой даты в таблице, что-то вроде:
Registrations Creation Date Accumulated
1 11-02-2017 1
1 10-25-2017 2
1 10-22-2017 3
1 10-20-2017 4
1 10-14-2017 5
1 10-02-2017 6
1 10-01-2017 7
Мой текущий запрос:
SELECT count(*) as total,
date(created_at) as date,
@running_count := @running_count + count(*) AS Counter
FROM Users
GROUP BY date
К сожалению, это не работает, кто-нибудь может пролить свет?
PS: Пожалуйста, не связывайте вопросы, которые показывают, как суммировать значения полей, так как это суммирует COUNT строк.
Вам нужно сделать группировку в подзапросе.
SELECT total AS Registrations, date AS `Creation Date`, @running_count := @running_count + total AS Accumulated
FROM (
SELECT date(created_at) AS date, COUNT(*) AS total
FROM Users
GROUP BY date
ORDER BY date) AS u
CROSS JOIN (SELECT @running_count := 0) AS var
Других решений пока нет …