Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laufende MySQL-Gesamtsumme mit COUNT

Aktualisierte Antwort

Das OP bat um einen Single-Query-Ansatz, um eine Benutzervariable nicht separat von der Verwendung der Variablen zur Berechnung der laufenden Summe festlegen zu müssen:

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;

Die "Inline-Initialisierung" von Benutzervariablen ist auch für die Simulation anderer Analysefunktionen nützlich. Tatsächlich habe ich diese Technik aus Antworten wie dieser gelernt .

Originalantwort

Sie müssen eine einschließende Abfrage einführen, um @running_sum zu tabellieren über Ihre COUNT(*)ed Datensätze:

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;

Siehe auch diese Antwort .