Tuesday 3 January 2017

Moving Average Sql Server 2012

Im Versuch, einen 3-Monats-Rolling-Durchschnitt gruppiert nach Region und Monat, wie in Anmerkung, dass der Monat für illustrative Zwecke erweitert berechnet wird, Id erwarten wirklich die Ausgabe nur sagen, einen einzigen Monat. Jetzt kann ich dies tun, indem Sie eine CTE-Gruppierung nach Region und Monat, dann beitreten, um es ein paar Mal wie Aber das ist hässlich, stellen Sie sich vor, wenn Sie einen 6 Monate rollenden durchschnittlichen oder 12 Monate rollenden durchschnittlich Im versuchen, Sql 2012 analytische Funktionen, speziell die RANGE-Option. Ive verwendet ROWS vorhergehend, aber nie Bereich. Ich habe versucht, einen Syntaxfehler zu erhalten: Msg 8120, Ebene 16, Status 1, Zeile 2 Die Spalte dbo. vwscorebyregion. month ist in der Auswahlliste ungültig, da sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. Klar Im etwas albern, aber Im nicht sicher was. Gespeichert marc 464k 9679 94 9679 889 9679 1060 Sie müssen diese Gruppe durch in die Fenster-Funktion: avg (var) über (Partition nach Region oder durch.) Ndash ahorsewithnoname Mar 23 13 bei 8:41 Zuerst wird RANGE nur mit UNBOUNDED und CURRENT ROW Rahmenbegrenzungen unterstützt, es kann nicht mit N PRECEDING oder N FOLLOWING verwendet werden. Von Ihrem Titel, sieht aus wie Sie wollen 3 Monate Rolling Avg (gleitende avg), dann sollten Sie besser zu verwenden ROWS Verwenden von ROWS (Dies ist eher, was Sie brauchen) SQl Fiddle Demo Hinweis: Mit RANGE: Hinweis: Mit RANGE Sie haben Um die Partitionsbreite zu steuern, da Sie nach 3 Monaten agg möchten, und der Bereich N nicht unterstützt und N FOLLOWING unterstützt. Es unterstützt nur folgende: beantwortet Mar 23 13 um 9: 39Ich habe die Diskussion, die Sie erwähnt haben. Es ist auf PostgreSQL anwendbar, da es erlaubt ist, benutzerdefinierte Aggregatfunktion mit SQL in PostgreSQL zu erstellen, aber nicht in SQL Server erlaubt. Die Verwendung von rekursiven CTE ist ein möglicher Weg in SQL Server, aber ich merke, dass CTE-Wege möglicherweise mehr Tabellen-Scan als Fenster-Funktionen. So mache ich diesen Beitrag zu fragen, ob es möglich ist, zu berechnen exponentiellen gleitenden Durchschnitt mit SQL Server 2012 Fensterfunktion genau wie die Berechnung einfach gleitenden Durchschnitt. Ndash xiagao1982 Apr 14 13 at 2:53 Zuerst berechnen Sie die EMA (SMA (x)) anstelle der EMA (x). Zweitens ist Ihre quotsmoothing constantquot eigentlich der Beta-Wert in meiner Formel, nicht die alpha. Mit diesen beiden Änderungen sieht das SQLFiddle wie folgt aus: sqlfiddle 6 19192 1 Es gibt jedoch noch einen kleinen Unterschied zwischen dem tatsächlichen Ergebnis und dem erwarteten Ergebnis. Ich würde zurückgehen und sehen, ob ihre EMA-Definition entspricht der, die ich kenne. Ndash Sebastian Meine 7 Mai, um 13:46 Ich schaute nur auf das Formular in der Kalkulationstabelle Sie angebracht und es ist weit weg von der Standard-EMA-Definition. Meine Formel berechnet den exponentiellen gleitenden Durchschnitt der letzten zehn Zeilen. Die Kalkulationstabelle berechnet zuerst den Standardmittelwert über die letzten zehn Zeilen und dann den unbeschränkten exponentiell gewichteten gleitenden Durchschnitt über alle Mittelwerte. Dies folgt dem Formular hier: de. wikipedia. org Wiki EWMAchart ndash Sebastian Meine Mai 7 13 at 13:52


No comments:

Post a Comment