Mysql
 sql >> Database >  >> RDS >> Mysql

Somma cumulativa MySQL raggruppata per data

Nuova risposta

All'inizio non capivo che stavi cercando di fare un totale parziale. Ecco come sarebbe:

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;

Risposta originale

Potresti ricevere duplicati a causa della tua iscrizione. Forse e1 ha più di una corrispondenza per alcune righe che sta gonfiando il tuo conteggio. O quello o il confronto nel tuo join sta anche confrontando i secondi, che non è quello che ti aspetti.

Ad ogni modo, invece di tagliare il campo datetime in giorni e mesi, rimuovi semplicemente il tempo da esso. Ecco come farlo.

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);