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

MySQL suma acumulada agrupada por fecha

Nueva respuesta

Al principio, no entendí que estabas tratando de hacer un total acumulado. Así es como se vería:

SET @runningTotal = 0;
SELECT 
    e_date,
    num_interactions,
    @runningTotal := @runningTotal + totals.num_interactions AS runningTotal
FROM
(SELECT 
    DATE(eDate) AS e_date,
    COUNT(*) AS num_interactions
FROM example AS e
GROUP BY DATE(e.Date)) totals
ORDER BY e_date;

Respuesta original

Podría estar obteniendo duplicados debido a su unión. Tal vez e1 tenga más de una coincidencia para algunas filas, lo que está inflando su conteo. O eso o la comparación en su unión también compara los segundos, que no es lo que espera.

De todos modos, en lugar de dividir el campo de fecha y hora en días y meses, simplemente elimine la hora. Así es como lo haces.

SELECT
   DATE(e.Date) AS e_date,
   count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON DATE(e1.Date) <= DATE(e.Date)
GROUP BY DATE(e.Date);