Nieuw antwoord
Eerst begreep ik niet dat je een lopend totaal probeerde te maken. Hier is hoe dat eruit zou zien:
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;
Oorspronkelijke antwoord
Het kan zijn dat u duplicaten krijgt vanwege uw deelname. Misschien heeft e1 meer dan één overeenkomst voor sommige rijen, wat uw aantal opdrijft. Ofwel dat, ofwel de vergelijking in je join vergelijkt ook de seconden, wat niet is wat je verwacht.
Hoe dan ook, in plaats van het datetime-veld in dagen en maanden te hakken, haal je er gewoon de tijd uit. Hier is hoe je dat doet.
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);