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

Total cumulé MySQL avec COUNT

Réponse mise à jour

L'OP a demandé une approche à requête unique, afin de ne pas avoir à définir une variable utilisateur séparément de l'utilisation de la variable pour calculer le total cumulé :

SELECT d.date,
       @running_sum:[email protected]_sum + d.count AS running
  FROM (  SELECT date, COUNT(*) AS `count`
            FROM table1
           WHERE date > '2011-09-29' AND applicationid = '123'
        GROUP BY date
        ORDER BY date ) d
  JOIN (SELECT @running_sum := 0 AS dummy) dummy;

"L'initialisation en ligne" des variables utilisateur est également utile pour simuler d'autres fonctions analytiques. En effet j'ai appris cette technique à partir de réponses comme celle-ci .

Réponse originale

Vous devez introduire une requête englobante pour tabuler le @running_sum sur vos COUNT(*)enregistrements :

SET @running_sum=0;
SELECT d.date,
       @running_sum:[email protected]_sum + d.count AS running
  FROM (  SELECT date, COUNT(*) AS `count`
            FROM table1
           WHERE date > '2011-09-29' AND applicationid = '123'
        GROUP BY date
        ORDER BY date ) d;

Voir aussi cette réponse .