Encontré esta pregunta mientras buscaba mi propia respuesta. Pensé en dejar mi solución aquí, ya que es otra forma de realizar la misma tarea y puede ser más eficiente. El truco es unirse a uno mismo usando >=
SELECT s1.ID, s1.name, s1.money, sum(s2.money) as accumulator
FROM student s1
INNER JOIN student s2 ON s1.id >= s2.id
GROUP BY s1.id HAVING accumulator <= 500;