Oracle Sql Exponentiell Gleitender Durchschnitt
Wenn Sie diese Nachricht sehen, hat Ihr Browser entweder deaktiviert oder unterstützt JavaScript nicht. Um die vollständigen Funktionen dieses Hilfesystems zu nutzen, wie zB die Suche, muss Ihr Browser JavaScript-Unterstützung aktiviert haben. Gewichtete Bewegungsdurchschnitte bei einfacher gleitender Durchschn. Wird jeder Datenwert in der Windowquot, in dem die Berechnung durchgeführt wird, eine gleiche Bedeutung oder Gewicht gegeben. Es ist oft der Fall, vor allem in der Finanzpreisdatenanalyse, dass chronologisch neuere Daten ein größeres Gewicht tragen sollten. In diesen Fällen wird Weighted Moving Average (oder Exponential Moving Average - siehe folgendes Thema) die Funktionalität oft bevorzugt. Betrachten Sie die gleiche Tabelle der Verkaufsdatenwerte für zwölf Monate: Um einen gewichteten beweglichen Durchschnitt zu berechnen: Berechnen Sie, wie viele Intervalle von Daten an der Moving Average-Berechnung teilnehmen (d. h. die Größe der Berechnung quotwindowquot). Wenn das Berechnungsfenster n ist, dann wird der aktuellste Datenwert im 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 beweglichen Durchschnitt über dieses Fenster zu geben. Platzieren Sie den gewichteten Moving Average Wert in einer neuen Spalte entsprechend der oben beschriebenen übergeordneten Mittelwertpositionierung. Um diese Schritte zu veranschaulichen, ist zu prüfen, ob im Dezember ein 3-monatiger gewichteter Umsatzkurs im Dezember erforderlich ist (unter Verwendung der obigen Tabelle der Verkaufswerte). Der Begriff quot3-monthquot impliziert, dass die Berechnung quotwindowquot 3 ist, daher sollte der gewichtete Moving Average Berechnungsalgorithmus für diesen Fall sein: Oder wenn ein 3-Monats-gewichteter Moving Average über den gesamten ursprünglichen Datenbereich ausgewertet wurde, wäre das Ergebnis : 3-Monats-gewichtete Moving AverageThis ist eine Evergreen Joe Celko Frage. Ich ignoriere die DBMS-Plattform. Aber auf jeden Fall konnte Joe vor mehr als 10 Jahren mit Standard-SQL antworten. Joe Celko SQL Puzzles and Answers Zitat: Dieser letzte Update-Versuch schlägt vor, dass wir das Prädikat verwenden könnten, um eine Abfrage zu konstruieren, die uns einen gleitenden Durchschnitt geben würde: Ist die zusätzliche Spalte oder die Abfrage besser angegangen Die Abfrage ist technisch besser, weil der UPDATE-Ansatz wird Denormalisieren der Datenbank. Allerdings, wenn die historischen Daten aufgezeichnet werden nicht zu ändern und die Berechnung der gleitenden Durchschnitt ist teuer, können Sie die Verwendung der Spalte Ansatz. SQL Puzzle Abfrage: mit allen Mitteln einheitlich. Sie werfen einfach auf die passende Gewicht Eimer abhängig von der Entfernung von der aktuellen Zeitpunkt. Zum Beispiel quottake weight1 für datapoints innerhalb von 24hrs aus aktueller datapoint weight0.5 für datapoints innerhalb von 48hrsquot. In diesem Fall ist es wichtig, wie viel aufeinanderfolgende Datenpunkte (wie 6:12 Uhr und 11:48 Uhr) von einander entfernt sind. Ein Anwendungsfall, den ich mir vorstellen kann, wäre ein Versuch, das Histogramm zu glätten, wo Datapunkte nicht dicht genug sind, ndash msciwoj Mai 27 15 at 22:22 Ich bin mir nicht sicher, dass Ihr erwartetes Ergebnis (Output) klassisch einfaches (rollendes) Durchschnitt für 3 Tage zeigt. Denn zum Beispiel gibt das erste Dreifach von Zahlen per Definition: aber du erwartest 4.360 und seine Verwirrung. Trotzdem schlage ich die folgende Lösung vor, die die Fensterfunktion AVG verwendet. Dieser Ansatz ist viel effizienter (klar und weniger ressourcenintensiv) als SELF-JOIN in anderen Antworten eingeführt (und Im überrascht, dass niemand eine bessere Lösung gegeben hat). Sie sehen, dass AVG mit Fall verpackt wird, wenn rownum gt p. days dann, um NULLs in den ersten Reihen zu zwingen, wo 3 Tagesbewegungsmitte bedeutungslos ist. Antwortete am 23. Februar 16 um 13:12 Wir können Joe Celkos schmutzige linke äußere Verknüpfungsmethode anwenden (wie oben von Diego Scaravaggi zitiert), um die Frage zu beantworten, wie es gefragt wurde. Generiert die angeforderte Ausgabe: antwortete Jan 9 16 bei 0:33 Deine Antwort 2017 Stack Exchange, IncIm versucht, einen exponentiellen gleitenden Durchschnitt (EMA) auf postgres zu implementieren, aber da ich die Dokumentation überprüfe und darüber nachdenke, desto mehr versuche ich das verwirrter ich Bin Die Formel für EMA (x) lautet: Es scheint perfekt für einen Aggregator zu sein, wobei das Ergebnis des zuletzt berechneten Elements genau das ist, was hier zu tun ist. Allerdings erzeugt ein Aggregator ein einziges Ergebnis (wie reduzieren oder falten) und hier benötigen wir eine Liste (eine Spalte) von Ergebnissen (als Karte). Ich habe überprüft, wie Prozeduren und Funktionen funktionieren, aber AFAIK produzieren sie eine einzelne Ausgabe, keine Spalte. Ich habe viele Prozeduren und Funktionen gesehen, aber ich kann nicht herausfinden, wie dies mit der relationalen Algebra interagiert, besonders wenn man so etwas macht, eine EMA. Ich hatte noch kein Glück, die Internets zu suchen. Aber die Definition für eine EMA ist ganz einfach, ich hoffe es ist möglich, diese Definition in etwas zu übersetzen, das in postgres arbeitet und einfach und effizient ist, weil das Umziehen auf NoSQL in meinem Kontext übertrieben wird. Ist das Berechnen der Aggregation, die das Ergebnis in jeder Zeile für jede Unterliste der Eingabedaten erzeugt. Da es so aussieht, dass es den Aggregator bis zur Zeile n verwendet, kehrt das Ergebnis zurück und geht dann in die Zeile 0, um die Aggregation bis zur Zeile n1 zu berechnen Nochmals. Gibt es eine Möglichkeit, die Akkumulation oder eine statische Variable (wie in C) zu verwenden, so dass dies einmal berechnet werden muss Danke. Ndash Trylks Jan 20 12 um 11:59 Nein, es kennt den kumulierten Wert. Wenn Sie die Abfrage mit dem Quoten-Info-Quot-Befehl unkommentiert ausführen, können Sie sehen, dass die Funktion nur einmal für jede Zeilenausgabe aufgerufen wird. Postgresql gibt den Statuswert auf jeder Zeile aus (falls ein finalfunc definiert ist, der aufgerufen wird, den Zustand in einen Ausgangswert umzuwandeln). Ndash araqnid 20. Januar um 12:04 ErwinBrandstetter: Ich habe die meisten Änderungen zurückgestellt - bei dem Format des ersten (Anker-) Teils der Abfrage kann EMA (x1) mit einer einzigen Zeile klar dargestellt werden Corespnds auf die einzelne Zeile definieren sie in der Frage. Im Falle des rekursiven Teils der Abfrage habe ich mn - 1 in der Join - Bedingung verwendet, um die Äquivalenz der Beziehung zu EMA (xn - 1) in der Frage anzuzeigen, obwohl dies weniger performant ist, wenn die Leistung ein ist Problem, das OP kann die Join-Bedingung ändern, um zu sein, wie Sie vorgeschlagen haben. Ndash Mark Bannister Jan 16 12 um 9:27
Comments
Post a Comment