Tuesday 28 November 2017

Moving Average Sqlite


Soweit ich Ihre Frage verstehe, Sie wollen nicht den Durchschnitt über die letzten N Elemente, aber in den letzten x Sekunden, bin ich richtig Nun, dies gibt Ihnen die Liste aller Preise aufgezeichnet die letzten 720 Sekunden: natürlich, Sie Kann dies der AVG-SQL-Funktion zuführen, um den Durchschnittspreis in diesem Fenster zu erhalten: Sie können auch andere Zeiteinheiten verwenden und diese sogar verketten. Um zum Beispiel den durchschnittlichen Preis für die letzte eineinhalb Stunde zu erhalten, können Sie: Edit: SQLite datetime reference finden Sie hier Der gleitende Durchschnitt mit einem Fenster x units large wird zum Zeitpunkt i gegeben durch: Um es zu berechnen, wollen Sie Um einen LIFO-Stack (der als Schlange implementiert werden kann) der Größe x zu machen. Und seine Summe berechnen. Sie können die Summe dann aktualisieren, indem Sie den neuen Wert hinzufügen und die alte von der alten Summe abziehen, die Sie die neue aus der Datenbank und die alte erhalten, indem Sie das erste Element aus dem Stapel werfen. Hmm, ok, aber ich wollte eine Sql-Auswahl, die es macht. Ndash microo8 Apr 17 12 at 10:13 microo8 Es gibt keine. (Zumindest nach meinem besten Wissen.) Das oben ist ziemlich einfach, ndash katrielalex Sie könnten es wahrscheinlich in einer SQL-Anweisung tun, wenn Sie verzweifelt waren, aber it39s wirklich nicht etwas, das SQL entworfen wurde machen. Rufen Sie die Daten ab und führen Sie dann die mathematischen Operationen in Ihrer bevorzugten Programmiersprache durch. Ndash Li-aung Yip Apr 17 12 at 13: 31Versuchen, um den gleitenden Durchschnitt auf einer per X Monate Basis mit SQLite. Problem ist, kann ich nicht scheinen, um zu finden oder finden Sie etwas Fernes nützlich, wie zu aggregieren mit einem X Monat (e) Lookback-Zeitraum und damit einen gleitenden Durchschnitt. Grundsätzlich würde ich wollen. (Gefälschte Daten) Herausforderungen Datum ist nicht auf einer pro Tag-Struktur, einige Intervalls sogar doesnt haben alle Arbeitstage in jedem Monat so haben, MAX () Tag auf jeden Monat verwenden, um den letzten Wert usw. Wenn es keinen X Monat gibt Rückblick der Durchschnitt muss bemust get null gefragt werden Wenn X Monate Lookback nicht vorhanden ist, füllen Sie mit Nullwerten. Der MA (Moving Average) kann natürlich nur gestartet werden, wenn diese X-Zahl der angeforderten Einträge existiert. Und es gibt sechs Zeilen für sechs Monate, wenn man nur den letzten Datenpunkt für jeden Monat mit etwas wie MAX (). Hier39s ein visuelles JS-Beispiel, wie ein MA50 und MA200 auf dem Apple-Aktienkurs (it39s mit Tagen und nicht Monaten) funktionieren würde. Jsfiddle. netWaEBc160 ndash Tommie Nov 20 16 am 11:09 Zuerst herausfiltern alle Zeilen, die nicht die letzten im Monat sind. Verwenden Sie dann eine skalare Unterabfrage, um den gleitenden Durchschnitt der Bedingung mit der m3-Unterabfrage zu berechnen, dass die AVG () - Unterabfrage keine Zeilen findet, wenn es nicht genau sechs sind. Die richtige Antwort darauf scheint nicht zu sein. Da ich mit sqlite php ich dachte, es war einfacher und mehr perfomant, dies zu tun, mit PHP statt, so dass ich eine einfache Helfer-Funktion für sie erstellt: Da wurden mit Arrays in PHP der Performance-Hit ist negliable und wahrscheinlich weniger dann wäre es zu berechnen Es mit SQLite. Ergebnisbild:

No comments:

Post a Comment