sql >> Databasteknik >  >> RDS >> Mysql

MySQL kumulativ summa grupperad efter datum

Nytt svar

Först förstod jag inte att du försökte göra en totalsumma. Så här skulle det se ut:

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;

Originalt svar

Du kan få dubbletter på grund av din anslutning. Kanske har e1 mer än en matchning för vissa rader, vilket ökar ditt antal. Antingen det eller jämförelsen i din join är också att jämföra sekunderna, vilket inte är vad du förväntar dig.

Hur som helst, istället för att skära in datum och tid-fältet i dagar och månader, ta bara bort tiden från det. Så här gör du det.

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. Hur man skriver join-förfrågan i Volusion API

  2. Jag kan inte använda mysql_*-funktionerna efter att ha uppgraderat PHP

  3. Varför ignorerar Rails en återställning i en (pseudo)kapslad transaktion?

  4. ProxySQL Native Clustering med Kubernetes