MySQL kumulative Summe nach Datum gruppiert
Ich weiß, es gab schon einige Beiträge zu diesem Zusammenhang, aber mein Fall ist ein wenig anders, und ich wollte einige Hilfe auf diesem.
Ich ziehen müssen einige Daten aus der Datenbank, die eine kumulative Anzahl von Interaktionen durch den Tag. derzeit das ist, was ich
SELECT
e.Date AS e_date,
count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON e1.Date <= e.Date
GROUP BY e.Date;
Die Ausgabe ist in der Nähe, was ich will, aber nicht genau das was ich brauche.
das problem das ich habe ist das die Daten gespeichert werden, mit der Stunde, minute und Sekunde, dass die Interaktion passiert, so dass die Gruppe von nicht-Gruppierung Tage zusammen.
dies ist, wie die Ausgabe aussieht. http://screencast.com/t/N1KFNFyil
auf 12-23 theres 5 Interaktionen, aber nicht gruppiert, da der Zeitstempel ist anders. also muss ich einen Weg finden, ignorieren Sie die timestamp und schauen Sie sich nur den Tag.
wenn ich versuche GROUP BY DAY(e.Date)
es Gruppen die Daten von Tag zu Tag nur (ich.e alles, was geschah am 1. eines Monats ist gruppiert in einer Zeile), und die Ausgabe ist nicht das was ich will überhaupt http://screencast.com/t/HN6DH3GV63M
GROUP BY DAY(e.Date), MONTH(e.Date)
ist, dass man es bis durch den Monat und den Tag des Monats, aber wieder die Anzahl ist deaktiviert.
Ich bin kein MySQL-Experte an alle also ich bin verwirrt auf was ich vermisst
- dies ist die Gruppe, die von TAG(), MONAT() Abbildung. konnte nicht mehr als 2 in meinem Beitrag. screencast.com/t/MnaXK7nLkY
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neue Antwort
Zuerst Verstand ich gar nicht, Sie versuchen zu tun, eine laufende Summe. Hier ist, wie das Aussehen würde:
Ursprüngliche Antwort
Sie könnten immer Duplikate, weil Ihr beitreten. Vielleicht e1 hat mehr als eine übereinstimmung für einige Zeilen, die das aufblasen Ihre Zählung. Entweder das, oder der Vergleich in deinem join ist auch der Vergleich der Sekunden, das ist nicht das, was Sie erwarten.
Jedenfalls, anstatt hacken das datetime-Feld in Tage und Monate, nur Streifen die mal von ihm. Hier ist, wie Sie das tun.
SET @runningTotal = 0;
durch@runningTotal := 0,
in der Unterabfrage 🙂 (Dieser Tipp kann auch hilft Ihnen,/mich zu machen multi-kumulative Summe mit UNION zwischen Abfragen)Ich habe herausgefunden, was ich tun musste Letzte Nacht... aber da bin ich neu in diesem, ich konnte nicht poste es dann... was ich Tat, funktionierte, war dies:
Wäre das weniger effizient als Ihre Abfrage? Ich kann nur die Berechnung in python nach dem herausziehen der Anzahl pro Tag wenn Ihr mehr effizient, denn es wird in der Größenordnung von tausenden bis Hunderttausenden von Zeilen zurückgegeben.