Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Soma cumulativa do MySQL agrupada por data


Nova resposta

No começo, não entendi que você estava tentando fazer um total contínuo. Aqui está como isso ficaria:
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;

Resposta original

Você pode estar recebendo duplicatas por causa de sua associação. Talvez e1 tenha mais de uma correspondência para algumas linhas, o que está inflando sua contagem. Ou isso ou a comparação em sua junção também está comparando os segundos, o que não é o que você espera.

De qualquer forma, em vez de cortar o campo datetime em dias e meses, apenas retire o tempo dele. Aqui está como você faz isso.
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);