Sayangnya, MySQL tidak menyediakan fungsi analitik, seperti Oracle dan SQL Server.
Salah satu cara untuk mendapatkan "total berjalan" adalah dengan menggunakan variabel pengguna, seperti ini:
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
CATATAN:Perilaku variabel memori seperti yang digunakan di atas tidak dijamin dalam konteks ini. Tetapi jika kita berhati-hati dengan kueri, kita bisa mendapatkan hasil yang dapat diprediksi dan berulang dalam pernyataan SELECT. Perilaku variabel memori dapat berubah di rilis mendatang, sehingga pendekatan ini tidak dapat dijalankan.
CATATAN:Saya pada dasarnya membungkus kueri Anda dalam tanda kurung, dan memberikannya alias sebagai tampilan sebaris (apa yang disebut MySQL sebagai "tabel turunan"). Saya membuat beberapa perubahan pada kueri Anda, GROUP BY Anda berpotensi untuk mengelompokkan Januari 2012 bersama dengan Januari dari 2013, saya mengubahnya. Saya juga menambahkan klausa ORDER BY.