Niestety, MySQL nie zapewnia funkcji analitycznych, takich jak Oracle i SQL Server.
Jednym ze sposobów na uzyskanie „suma bieżącej” jest użycie zmiennej użytkownika, mniej więcej tak:
SELECT t.Date
, t.NewUsers
, @rt := @rt + t.NewUsers AS `Running Total`
FROM (SELECT @rt := 0) i
JOIN (
SELECT DATE_FORMAT(created,'%Y%m%d') AS `Date`
, COUNT(item_id) as `NewUsers`
FROM AP_user
WHERE YEAR(created) > 2011
AND user_groups = '63655'
AND user_active = 1
AND userID NOT IN $excludedUsers
GROUP BY DATE_FORMAT(created,'%Y-%m')
ORDER BY DATE_FORMAT(created,'%Y-%m') ASC
) t
UWAGA:Zachowanie zmiennych pamięci, jak użyte powyżej, nie jest gwarantowane w tym kontekście. Ale jeśli będziemy ostrożni z zapytaniem, możemy uzyskać przewidywalne, powtarzalne wyniki w instrukcjach SELECT. Zachowanie zmiennych pamięci może się zmienić w przyszłej wersji, czyniąc to podejście niewykonalnym.
UWAGA:Zasadniczo umieściłem twoje zapytanie w nawiasach i nadałem mu alias jako widok wbudowany (co MySQL nazywa „tablicą pochodną”). Wprowadziłem kilka zmian w Twoim zapytaniu, Twoje GROUP BY ma potencjał do grupowania stycznia 2012 razem ze styczniem z 2013, zmieniłem to. Dodałem również klauzulę ORDER BY.