Thursday 27 April 2017

Moving Average In Oracle Sql

Wenn Sie diese Meldung sehen, hat Ihr Browser entweder deaktiviert oder unterstützt kein JavaScript. Um die vollständigen Funktionen dieses Hilfesystems, z. B. die Suche, nutzen zu können, muss Ihr Browser JavaScript-Unterstützung aktiviert haben. Weighted Moving Averages Mit Simple Moving Averages wird jeder Datenwert in dem Windowquot, in dem die Berechnung durchgeführt wird, eine gleiche Bedeutung oder Gewicht zugewiesen. Es ist oft der Fall, vor allem in der Finanzdaten-Daten-Analyse, dass mehr chronologisch jüngsten Daten ein größeres Gewicht tragen sollte. In diesen Fällen wird der gewichtete gleitende Durchschnitt (oder der exponentielle gleitende Durchschnitt - siehe das folgende Thema) häufig bevorzugt. Betrachten Sie die gleiche Tabelle der Verkaufsdatenwerte für zwölf Monate: Um einen gewichteten gleitenden Durchschnitt zu berechnen: Berechnen Sie, wie viele Intervalle von Daten an der Moving Average Berechnung beteiligt sind (d. h. die Größe des rechnerischen Windowquot). Wenn das Berechnungsfenster n ist, wird der jüngste Datenwert in dem Fenster mit n multipliziert, der nächstletzte multipliziert mit n-1, der Wert vor dem multipliziert mit n-2 und so weiter für alle Werte im Fenster. Teilen Sie die Summe aller multiplizierten Werte durch die Summe der Gewichte, um den gewichteten gleitenden Durchschnitt über diesem Fenster zu erhalten. Stellen Sie den Weighted Moving Average-Wert in eine neue Spalte entsprechend der oben beschriebenen Positionierung der mittleren Mittelwerte ein. Um diese Schritte zu veranschaulichen, sollten Sie berücksichtigen, ob ein dreimonatiger gewichteter gleitender Durchschnitt der Verkäufe im Dezember erforderlich ist (unter Verwendung der obigen Tabelle der Verkaufswerte). Der Begriff "3-monthquot" impliziert, dass das Berechnungsfenster für den Windowquot 3 ist, daher sollte der Algorithmus für den Weighted Moving Average-Berechnungsfaktor für diesen Fall sein: Oder, wenn ein 3-Monats-Weighted Moving Average über den gesamten ursprünglichen Datenbereich ausgewertet würde : 3-Monats-gewichteter verschobener DurchschnittExponentieller gleitender Durchschnitt in T-SQL Exponentielle gleitende Durchschnittswerte sind ähnlich gewichteten gleitenden Durchschnittswerten, da sie den Änderungen vor langer Zeit weniger Gewicht zuweisen und den jüngsten Änderungen mehr Gewicht verleihen. Die gewichteten gleitenden Mittelwerte sind linear, aber exponentielle gleitende Mittelwerte sind exponentiell. Das heißt, das Gewicht kann als Kurve ausgedrückt werden: Es gibt eine große Möglichkeit, exponentielle gleitende Mittelwerte in T-SQL zu berechnen, indem Sie ein undokumentiertes Feature über Variablen und laufende Summen in SQL Server verwenden. In diesem Blogpfosten werde ich zeigen, wie man diese Methode verwendet, um exponentiellen gleitenden Durchschnitt in T-SQL zu berechnen, aber ich werde auch eine Methode vorstellen, die Standardfunktionen in SQL Server verwendet. Leider bedeutet das, mit einer Schleife. In den Beispielen werde ich einen 9 Tage exponentiellen gleitenden Durchschnitt berechnen. Die Beispiele verwenden die Datenbank TAdb. Ein Skript zur Erstellung von TAdb finden Sie hier. Exponential Moving Average (EMA): Laufende Totals-Methode Die Theorie hinter den laufenden Total Features in Updates wird ausführlich von Jeff Moden in seinem Artikel Solving the Running Total und Ordinal Rang Probleme beschrieben. Weitere Ressourcen, die diese Methode zur Berechnung von EMA beschreiben, sind der Blogpfosten, der die gleitenden Durchschnitte mit T-SQL von Gabriel Priester berechnet und dem Forumsbeitrag Exponential Moving Average Challenge. Beide auf SQL Server Central. Grundsätzlich können Sie in T-SQL sowohl Variablen als auch Spalten in einer update - Anweisung aktualisieren. Die Aktualisierungen werden Zeile für Zeile intern von SQL Server ausgeführt. Dieses Zeilen-für-Zeile-Verhalten macht die Berechnung einer laufenden Summe möglich. Dieses Beispiel zeigt, wie es funktioniert: Beachten Sie, dass 8220ColumnRunningTotal8221 eine laufende Summe von 8220ColumnToSum8221 ist. Mit dieser Methode können wir EMA9 mit diesem T-SQL berechnen: Die Berechnung von EMA ist recht einfach. Wir verwenden die aktuelle Zeile und die vorherige, aber mit mehr Gewicht auf die aktuelle Zeile. Das Gewicht wird nach der Formel 2 (19) berechnet, wobei 822098221 der Parameter für die Länge der EMA ist. Zur Berechnung von EMA9 für Zeile 10 oben ist die Berechnung: In diesem Fall erhält die aktuelle Zeile 20 des Gewichts (2 (19) 0,2) und die vorherige Zeile erhält 80 des Gewichts (1-2 (19) 0,8). Sie finden diese Berechnung in der Anweisung oben in der CASE-Anweisung: Exponential Moving Average (EMA): Looping-Methode Soweit ich weiß, mit Ausnahme der laufenden Summenmethode oben skizziert, gibt es keine Möglichkeit, EMA mit einer setbasierten SQL-Anweisung zu berechnen . Daher verwendet die T-SQL unten eine while-Schleife, um EMA9 zu berechnen: Die Ergebnisse sind die gleichen wie in den laufenden Summen Beispiel oben. Leistung Wie erwartet, ist die set based running sumals-Version viel schneller als die Loop-Version. Auf meiner Maschine lag die setbasierte Lösung bei etwa 300 ms, verglichen mit etwa 1200 bei der Loop-Version. Die Schleifenversion entspricht jedoch mehr den SQL-Standards. Also die Wahl zwischen den Methoden hängt von what8217s am wichtigsten für Sie, Leistung oder Standards. Der exponentielle gleitende Durchschnitt kann in der Trendanalyse verwendet werden, wie bei den anderen Arten von gleitenden Durchschnitten, dem Simple Moving Average (SMA) und dem gewichteten gleitenden Durchschnitt (WMA). Es gibt auch andere Berechnungen in der technischen Analyse, die die EMA, MACD zum Beispiel verwendet. Dieser Blog-Beitrag ist Teil einer Serie über technische Analyse, TA, in SQL Server. Siehe die anderen Beiträge hier. Geschrieben von Tomas Lind Tomas Lind - Consulting als SQL Server DBA und Datenbankentwickler bei High Coast Database Solutions AB.


No comments:

Post a Comment