sql >> Database >  >> RDS >> Mysql

MySQL cumulatieve som gegroepeerd op datum

Nieuw antwoord

Eerst begreep ik niet dat je een lopend totaal probeerde te maken. Hier is hoe dat eruit zou zien:

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;

Oorspronkelijke antwoord

Het kan zijn dat u duplicaten krijgt vanwege uw deelname. Misschien heeft e1 meer dan één overeenkomst voor sommige rijen, wat uw aantal opdrijft. Ofwel dat, ofwel de vergelijking in je join vergelijkt ook de seconden, wat niet is wat je verwacht.

Hoe dan ook, in plaats van het datetime-veld in dagen en maanden te hakken, haal je er gewoon de tijd uit. Hier is hoe je dat doet.

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


  1. MySQL - SELECTEER ALS in WAAR

  2. Hoe hernoem ik een externe sleutel in mysql?

  3. Verzamelmethoden:EERSTE &LAATSTE functies in Oracle Database

  4. Ontbrekende eerste rij gegevens van MYSQL