sql >> Databáze >  >> RDS >> Mysql

Kumulativní součet MySQL seskupený podle data

Nová odpověď

Nejdřív jsem nechápal, že se snažíš udělat průběžný součet. Takto by to vypadalo:

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;

Původní odpověď

Kvůli vašemu připojení můžete získat duplikáty. Možná má e1 více než jednu shodu pro některé řádky, což zvyšuje váš počet. Buď to, nebo srovnání ve vašem spojení také porovnává sekundy, což není to, co očekáváte.

Každopádně místo rozřezávání pole datetime na dny a měsíce z něj prostě odeberte čas. Zde je návod, jak to udělat.

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. SQL:Vyberte záznamy, kde VŠECHNY spojené záznamy splňují určitou podmínku

  2. Nelze převést hodnotu data/času MySQL na System.DateTime

  3. Jak opakovat tiskové příkazy při provádění skriptu SQL

  4. t-sql select získat všechny měsíce v rozmezí let