sql >> Database teknologi >  >> RDS >> Mysql

MySQL kumulativ sum grupperet efter dato

Nyt svar

Til at begynde med forstod jeg ikke, at du forsøgte at lave en samlet sum. Sådan ser det ud:

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;
 

Oprindeligt svar

Du kan få dubletter på grund af din tilslutning. Måske har e1 mere end én kamp for nogle rækker, hvilket øger dit antal. Enten det eller sammenligningen i dit join er også at sammenligne sekunderne, hvilket ikke er, hvad du forventer.

Under alle omstændigheder, i stedet for at skære dato og klokkeslæt i dage og måneder, skal du blot fjerne tiden fra det. Sådan 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. Sådan bruger du Import/Eksport-guiden i SQL Server - SQL Server / TSQL-vejledning, del 104

  2. Indvirkning af fragmentering på udførelsesplaner

  3. Google Cloud Dataflow brugerdefineret MySQL-kilde

  4. Hvordan kontrollerer man den endelige SQL-parametriserede forespørgsel i PHP med PDO?