sql >> Database >  >> RDS >> Mysql

MySQL Running Total met COUNT

Bijgewerkt antwoord

Het OP vroeg om een ​​single-query-aanpak, zodat een gebruikersvariabele niet apart hoeft te worden SET van het gebruik van de variabele om het lopende totaal te berekenen:

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;

"Inline initialisatie" van gebruikersvariabelen is ook handig voor het simuleren van andere analytische functies. Ik heb deze techniek inderdaad geleerd van antwoorden zoals deze .

Oorspronkelijk antwoord

U moet een insluitende query invoeren om de @running_sum over uw COUNT(*)ed records:

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;

Zie ook dit antwoord .



  1. MySQL CONVERT_TZ()

  2. Twee inserts in PHP/MySQL met LAST_INSERT_ID() en rijen uit een andere tabel

  3. PostgreSQL:geef alle machtigingen aan een gebruiker op een PostgreSQL-database

  4. Gegevens ophalen uit sql-database en weergeven in tabellen - Bepaalde gegevens weergeven volgens aangevinkte selectievakjes