Wir versuchen, einen gleitenden Durchschnitt zu berechnen und haben versucht, zahlreiche SO-Antworten zu konvertieren, um das Problem zu lösen. Bis zu diesem Punkt sind wir immer noch nicht erfolgreich.Berechnen eines rekursiven gleitenden Durchschnitts in SQL Server
Was wir versucht haben:
Hier sind einige der SO Antworten, die wir in Betracht gezogen haben.
- SQL Server: How to get a rolling sum over 3 days for different customers within same table
- SQL Query for 7 Day Rolling Average in SQL Server
- T-SQL calculate moving average
Unsere neueste Versuch war eine der Lösungen (# 4) hier zu ändern. https://www.red-gate.com/simple-talk/sql/t-sql-programming/calculating-values-within-a-rolling-window-in-transact-sql/
Beispiel:
Hier ein Beispiel in SQL Fiddle ist: http://sqlfiddle.com/#!6/4570a/17
In der Geige, versuchen wir immer noch um die Summe zu erhalten Recht auf Arbeit, aber letztlich das bekommen wir versuchen, durchschnittlich.
Das Endziel
die Fiddle Beispiel verwenden, müssen wir den Unterschied zwischen Wert1 und ComparisonValue1 finden und sie als Diff1 präsentieren. Wenn für eine Zeile kein Value1 verfügbar ist, müssen wir sie schätzen, indem wir den Durchschnitt der letzten beiden Diff1-Werte nehmen und ihn dann dem ComparisonValue1 für diese Zeile hinzufügen.
Mit der richtigen Abfrage, wäre das Ergebnis wie folgt aussehen:
GroupID Number ComparisonValue1 Diff1 Value1
5 10 54.78 2.41 57.19
5 11 55.91 2.62 58.53
5 12 55.93 2.78 58.71
5 13 56.54 2.7 59.24
5 14 56.14 2.74 58.88
5 15 55.57 2.72 58.29
5 16 55.26 2.73 57.99
Frage: ist es möglich, diesen Mittelwert zu berechnen, wenn es möglicherweise in den Durchschnitt der folgenden Zeilen Faktor könnte?
aktualisieren:
- Added einen Blick auf das Fiddle-Schema die endgültige Abfrage zu vereinfachen.
- Die Abfrage wurde aktualisiert, um den neuen fortlaufenden Durchschnitt für Diff1 (Spalte Diff1Last2Avg) einzuschließen. Dieser gleitende Durchschnittswert funktioniert gut, bis wir in der Spalte Wert1 auf Nullen stoßen. Hier müssen wir die Schätzung einfügen.
- Die query aktualisiert, um die Schätzung einzuschließen, die verwendet werden sollte, wenn es keinen Wert1 (Spalte Value1Estimate) gibt. Dies funktioniert hervorragend und wäre perfekt, wenn wir die Schätzung anstelle von NULL in der Spalte Wert1 verwenden könnten. Da die Diff1-Spalte die Differenz zwischen Value1 (oder dessen Schätzung) und ComparisonValue1 widerspiegelt, würde die Schätzung alle NULL-Werte in Diff1 enthalten. Dies würde wiederum ermöglichen, die Schätzungen zukünftiger Reihen zu berechnen. Es wird an dieser Stelle verwirrend, aber hackt immer noch davon ab. Irgendwelche Ideen?
Wenn möglich, reduzieren Sie die Anzahl der Datensätze und fügen Sie das erwartete Ergebnis im fraglichen Tabellenformat hinzu. Gute Frage –
Welche Version von SQL? – Xedni
@Xedni SQL Server 2008 –