sql >> Base de Datos >  >> RDS >> Mysql

Calcular un total acumulado en MySQL

Quizás una solución más simple para usted y evita que la base de datos tenga que hacer un montón de consultas. Esto ejecuta solo una consulta y luego hace un poco de matemática sobre los resultados en un solo paso.

SET @runtot:=0;
SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rt
FROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c
    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d
    ORDER  BY d) AS q1

Esto le dará una columna RT (total acumulado) adicional. No se pierda la declaración SET en la parte superior para inicializar primero la variable total acumulada o simplemente obtendrá una columna de valores NULL.