Mysql
 sql >> Base de données >  >> RDS >> Mysql

Somme cumulée MySQL groupée par date

Nouvelle réponse

Au début, je n'avais pas compris que vous essayiez de faire un total cumulé. Voici à quoi cela ressemblerait :

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;

Réponse originale

Vous pourriez obtenir des doublons à cause de votre jointure. Peut-être que e1 a plus d'une correspondance pour certaines lignes, ce qui gonfle votre compte. Soit cela, soit la comparaison dans votre jointure compare également les secondes, ce qui n'est pas ce à quoi vous vous attendez.

Quoi qu'il en soit, au lieu de découper le champ datetime en jours et en mois, supprimez simplement l'heure. Voici comment procéder.

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