Wie berechne ich die kumulative Summe einer Spalte im Zeitverlauf, wenn viele der Spalten Nullwerte haben?MySQL: Kumulative Summe mit Nullzeilen berechnen
Ich versuche, die folgende ein, und meine Abfrage Timeout ohne Meldung spezifischen Fehler:
SELECT t1.time_purchased,
t1.savings AS daily_savings,
SUM(t2.savings) AS total_savings
FROM items AS t1,
items AS t2
WHERE t1.time_purchased >= t2.time_purchased
GROUP BY t1.time_purchased;
time_purchased und Spar Reihen sind oft leer - wird dies den Fehler verursacht? Wenn ja, was kann ich tun, um diese Fehler zu überspringen und trotzdem die Einsparungen zu den total_savings hinzuzufügen?
Idealerweise möchte ich die kumulativen Einsparungen im Laufe der Zeit zeigen, unabhängig von time_purchased. Vielen Dank!
SOLUTION EDIT:
Vielen Dank an alle für die dort Hilfe. Die endgültige Lösung erforderte, dass meine FROM-Anweisung aus einer Tabelle auswählte, in der die Einsparungen keine Nullwerte enthielten, andernfalls war cumulative_sum weiterhin null, weil ich in einigen Fällen einen Nullwert hinzufügte. Sehen Sie sich die Lösung unter:
SET @cumulative_sum := 0;
SELECT
time_purchased
,savings
,(@cumulative_sum := @cumulative_sum + savings) AS cumulative_sum
FROM (SELECT * FROM items WHERE savings IS NOT NULL) AS i
ORDER BY time_purchased;
Es hat nichts mit den Nullwerten zu tun. Das Problem ist, dass das Kreuzprodukt sehr groß ist. – Barmar
Hat diese Tabelle Einsparungen für jeden Kunden? Sie gruppieren nicht nach Kunden, so dass für jeden Kunden und jedes Datum eine Zeile angezeigt wird und die Gesamtsumme für * alle * anderen Kunden angezeigt wird. – Barmar
Es hat keine Ersparnis für jeden Kunden - wie würdest du mir empfehlen zu gruppieren? – avtomate