Ich habe die Diskussion gelesen, die du erwähnt hast Es ist anwendbar auf PostgreSQL, da es erlaubt ist, benutzerdefinierte aggregierte Funktion mit SQL in PostgreSQL zu erstellen, aber nicht erlaubt in SQL Server Mit rekursiven CTE ist eine machbare Weise in SQL Server, aber ich merke, dass CTE Weg kann mehr Tabellen-Scan als Fenster-Funktionen, so dass ich diesen Beitrag zu fragen, ob es möglich ist, zu berechnen exponentiell gleitenden Durchschnitt mit SQL Server 2012 Fenster-Funktion genau wie die Berechnung einfacher gleitender Durchschnitt xiagao1982 Apr 14 13 bei 2 53.First, Sie berechnen die EMA SMA x statt der EMA x Zweitens ist deine Glättungskonstante eigentlich der Beta-Wert in meiner Formel, nicht das Alpha Mit diesen beiden Änderungen sieht das SQLFiddle so aus. Allerdings gibt es noch einen kleinen Unterschied zwischen dem tatsächlichen Ergebnis und dem erwarteten Ergebnis Ich würde zurückkehren und sehen, ob ihre EMA-Definition mit dem übereinstimmt, den ich sebastian Meine 7. Mai 13 um 13 46 kenne. Ich habe gerade das Formular in der Kalkulationstabelle angeschaut, die du angeschlossen hast und es ist weg von der Standard-EMA-Definition. Meine Formel berechnet das exponentielle Verschieben Durchschnitt der letzten zehn Zeilen Die Kalkulationstabelle berechnet zunächst den Standard-Durchschnitt über die letzten zehn Zeilen und dann den uneingeschränkten exponentiell gewichteten gleitenden Durchschnitt über alle Mittelwerte Dies folgt dem Formular hier Sebastian Meine Mai 7 13 bei 13 52.Um einen einfachen gleitenden Durchschnitt zu glätten Out Daten ist eine ziemlich beliebte Technik es ist zu schlecht das primäre Beispiel in der SQL Anywhere Hilfe ist weit von einfach Was macht dieses Beispiel so komplex Neben der Problem-Anweisung, das ist berechnen den gleitenden Durchschnitt aller Produktverkäufe, im Monat, in der Jahr 2000.Hier s, was macht es komplex. Zwei Verweise auf die AVG-Funktion. a GROUP BY, die alle von sich aus macht fast jeder SELECT ein Kopf-Scratcher. Eine Stealth-WINDOW-Klausel. ein WINDOW-Klausel, die nicht einmal das WINDOW-Keyword verwendet, so dass die Uneingeweihten die Leute, die Beispiele mehr als alle anderen brauchen, ist es nicht offensichtlich, dass ein FENSTER überhaupt beteiligt ist. Nicht nur eine WINDOW-Klausel, Aber eine, die jede einzelne Komponente, die Sie in einer WINDOW. a PARTITION BY. a RANGE Klausel nicht eine einfache ROWS-Klausel, aber voll-geblasen RANGE-Klausel, eine, die eine intime Beziehung mit der ORDER BY Ich weiß, was eine Zeile ist, Aber was das Redakteur ist ein RANGE. But warten, da s mehr Die Wahl von RANGE über ROWS in diesem Beispiel ist entscheidend für den korrekten Betrieb der Abfrage für eine ausführlichere Diskussion dieses Beispiels, siehe Beispiel 23 - Berechnen eines Moving Average In Glenn Paulley s ausgezeichnetes OLAP weißes Papier Jetzt, lassen Sie s wieder auf track. A Wirklich wirklich einfach Moving Average. Das folgende Beispiel zeigt 10 Tage im Wert von Daten zusammen mit dem gleitenden Durchschnitt der heutigen Wert und gestern s Die WINDOW-Klausel auf Linien 21 bis 23 definiert ein bewegendes Fenster, das zwei Zeilen enthält, die heute die Zeile CURRENT ROW und gestern s Zeile 1 PRECEDING. die FENSTER ORDER BY-Klausel bestimmt, was PRECEDING die vorhergehende Zeile durch und. die ROWS-Klausel bestimmt die Größe des Fensters immer zwei Zeilen. Der Ausdruck AVG OVER twodays auf Zeile 19 bezieht sich auf die WINDOW-Klausel nach Namen, und es sagt SQL Anywhere, um den Durchschnitt der beiden Werte zu berechnen, die im 2-reihigen Schiebefenster vorhanden sind, für jede Zeile im Ergebnis set. So , Für 2012-02-02 der Durchschnitt von 10 und 20 ist 15 000000.for 2012-02-03 der Durchschnitt von 20 und 10 ist 15 000000.for 2012-02-04 der Durchschnitt von 10 und 30 ist 20 000000.for 2012-02-10 der Durchschnitt von 10 und 60 ist 35 000000.Oops, was über die erste row. The 2012-02-01 Zeile doesn t haben eine PRECEDING Zeile, also was ist der Durchschnitt über das bewegte Fenster. Nach Glenn Paulley s Whitepaper im Falle eines bewegten Fensters, wird davon ausgegangen, dass Zeilen, die Nullwerte enthalten, vor der ersten Zeile und nach der letzten Zeile in der Eingabe vorhanden sind. Das bedeutet, wenn das bewegte Fenster 2012-02-01 als das hat CURRENT ROW, die 1 PRECEDING-Zeile enthält NULL-Werte und wenn SQL Anywhere ein AVG berechnet, das einen NULL-Wert enthält, zählt es nicht das NULL überhaupt nicht im Zähler oder im Nenner bei der Berechnung des durchschnittlichen Hier s-Beweis Das ist der Grund, warum twodayaverage 10 000000 für die erste Reihe 2012-02-01.Posted von Breck Carter um 3 47 PM. There war eine nette Frage auf OTN heute darüber, ob es eine Standard-Oracle-Funktion zur Berechnung der exponentiellen gleitenden Durchschnitt Die Antwort ist, dass es keine gibt Eine solche Funktion, aber mit der Modellklausel kannst du es sehr einfach berechnen und es ist ein schönes Beispiel dafür, was ich mit einer variablen Anzahl von Berechnungen auf der Grundlage von berechneten Werten finde, die in meinem dritten Teil des Modellklausel-Tutorials geschrieben wurden. Bis heute habe ich didn Ich weiß sogar, was ein exponentieller gleitender Durchschnitt genau warst Du kannst hier mehr über Wikipedia lesen oder hier mit einem schönen Beispiel aus dem ersten Link. Ein exponentieller gleitender Durchschnitt EMA, wendet die Gewichtungsfaktoren an, die exponentiell abnehmen Die Gewichtung für jeden älteren Datenpunkt nimmt ab Exponentiell, viel mehr Bedeutung für die jüngsten Beobachtungen, während immer noch nicht verwerfen älteren Beobachtungen ganz. Von der zweiten Link. Die Formel für die Berechnung einer exponentiellen Moving Average EMA ist. X Aktuelle EMA dh EMA zu berechnen. C Aktuelle ursprüngliche Datenwert. K Glättung Constant. P Zurück EMA. Die erste EMA in dem zu berechnenden Bereich ist beliebig und kann der entsprechende ursprüngliche Datenwert oder oft ein einfacher bewegter Mittelwert sein. K Glättung Konstante 2 1 n. Und dieser Formel folgt ein Beispiel, das ich ein bisschen erweitert habe, Mit dieser Tabelle. Die Aufzeichnungen aus Produkt A entsprechen das Beispiel in der Link Ich habe die Zahlen aus Produkt B Hier ist die Modell Klausel Abfrage, die die Formel implementiert Hinweis, wie die Formel direkt in die einzige Regel der Modellklausel Die Glättung Konstante K ist auf 5 gesetzt, basierend auf einem Fenster von Werten n gleich 3.Challenge versuchen, dies ohne die Modell-Klausel und sehen, ob Sie kommen können mit etwas mehr umfassenden.11 2 Features in use. with dat als select A Produkt Datum 2009-01-01 Monat, 10 Betrag von Dual Union alle wählen A, Datum 2009-02-01, 15 aus Dual Union alle wählen A, Datum 2009-03-01, 17 aus Dual Union alle wählen A, Datum 2009-04 -01, 20 aus Dual Union alle wählen A, Datum 2009-05-01, 22 aus Dual Union alle wählen A, Datum 2009-06-01, 20 aus Dual Union alle wählen A, Datum 2009-07-01, 25 aus Dual Union alle wählen A, Datum 2009-08-01, 27 aus Dual Union alle wählen A, Datum 2009-09-01, 30 aus Dual Union alle wählen A, Datum 2009-10-01, 35 aus Dual Union alle wählen A , Datum 2009-11-01, 37 aus Dual Union alle wählen A, Datum 2009-12-01, 40 aus Dual Union alle wählen B, Datum 2009-01-01, 0 aus Dual Union alle wählen B, Datum 2009-02 -01, 50 aus Dual Union alle wählen B, Datum 2009-03-01, 10 aus Dual Union alle wählen B, Datum 2009-04-01, 40 aus Dual Union alle wählen B, Datum 2009-05-01, 15 aus Dual Union alle wählen B, Datum 2009-06-01, 35 aus Dual Union alle wählen B, Datum 2009-07-01, 30 aus Dual Union alle wählen B, Datum 2009-08-01, 30 aus Dual Union alle wählen B , Datum 2009-09-01, 20 aus Dual Union alle wählen B, Datum 2009-10-01, 20 aus Dual Union alle wählen B, Datum 2009-11-01, 20 aus Dual Union alle wählen B, Datum 2009-12 -01, 20 aus Dual, rns als select dat rownumber über Partition nach Produkt Reihenfolge nach Monat rn - 2 1 zählen über Partition nach Produkt k 0 5 k aus dat, res Produkt, Monat, Menge, rn, x als select x aus Rns r wobei rn 1 union alle auswahl x es xx von rns ns, res es, wo 1 und Produkt, Monat, Menge, rn, runde x, 3 EMA aus res Reihenfolge nach Produkt, Monat auswählen. Nach der Berechnung der geschlossenen Form I Kam mit dem folgenden Code, dass, wenn mehr wie eine Verschleierung als alles, was umfangreiche Die Idee ist es, laufende Multiples mit einer String-Verkettung und die xml-eval-Funktionalität zu schaffen Die geschlossenen Formen der speziellen Fälle müssen nur laufende Summen. Es gibt einen allgemeinen Fall und Zwei spezielle Fälle, die viel einfacher sind. mit T1 als auserwähltes Produkt, Monat, Betrag, Menge ci, Rownumber über Partition nach Produkt Reihenfolge nach Monat rn, --2 1 Rownumber über Partition nach Produkt Reihenfolge nach Monat ki 0 5 Ki aus dem Verkauf, T2 als auserwähltes Produkt, Monat, Menge, Fall, wenn rn 1 dann 1 sonst ki Ende ci ai, Fall, wenn rn 1 dann 1 sonst 1 - ki Ende bi von t1, t3 als SELECT Produkt, MONTH, Menge, ai, xmlquery REPLACE wmconcat Bi über PARTITION DURCH Produkt BESTELLUNG VON MONAT Zeilen ZWISCHEN unbegrenzten vorangehenden UND CURRENT ROW,, RETURNING mi VON t2, t4 als Produkt auswählen, Monat, Menge, mi, ai mi xi von t3 SELECT Produkt, MONTH, Menge, runde mi SUM xi Über PARTITION BY Produkt ORDER BY MONTH Zeilen ZWISCHEN unbegrenzten vorangehenden UND CURRENT ROW, 3 ema FROM t4.Special Fall K 0 5.with t1 als Produkt auswählen, Monat, Menge, Rownumber über Partition nach Produkt Reihenfolge nach Monat rn, Betrag Leistung 2, Nvl nullif rownumber über Partition nach Produkt Reihenfolge nach Monat - 1, 0, 1 ci aus Umsatz Auswahl Produkt, Monat, Betrag, Runde Summe ci über Partition nach Produkt Reihenfolge nach Monat Zeilen zwischen unbegrenzten vorherigen und aktuellen Zeile Macht 2, rn, 3 ema Von t1.Special Fall K 2 1 i. mit T1 als Produkt auswählen, Monat, Menge, Rownumber über Partition nach Produkt Reihenfolge nach Monat rn, Betrag Rownumber über Partition nach Produkt Reihenfolge nach Monat ci aus Verkauf Produkt auswählen, Monat, Betrag, Runde Summe ci über Partition nach Produktreihenfolge nach Monat Zeilen zwischen unbegrenzter vorhergehender und aktueller Zeile 2 rn rn 1, 3 ema von t1.I ll post den Beweis der geschlossenen Form, wenn jemand daran interessiert ist. Dies ist ein großartiges Beispiel für Spaß mit SQL. A Kombination von XMLQuery, die undokumentierte wmconcat und analytische Funktionen mit der Fenster-Klausel Ich mag es Obwohl es nicht so umfangreich wie die Modell-Klausel-Variante und die Rafu s rekursive mit einem, wie Sie sich selbst sagte. Und sicher, ich d Ich sehe den Beweis für die geschlossene Form. Ich habe eine andere Frage, wie man die Glättung konstant optimieren kann. SELECT k - Glättung Konstante mse - durchschnittlichen quadratischen Fehler FROM AUSWÄHLEN AUS Verkauf MODELL DIMENSION DURCH Produkt ROWNUMBER ÜBER PARTITION DURCH Produkt ORDER BY Monat ASC Rn MEASURES Betrag - Verkaufsbetrag Monat - Monat 0 AS C 0 AS P 0 AS X 0 AS SE - quadratischer Fehler - - Arbeitszeile und Attribute - eine Arbeitszeile ist Produkt X, rn 1 - b Arbeit Attribute sind wie folgt 0 AS SSE - Summe SE für alle Produkte Monate 0 AS MSE - mittlere SSE für alle Produkte Monate 0 AS k - für alle Produkte Monate 0 AS PreMSE - vorherige ks MSE für alle Produkte Monate 0 AS diff - zwischen aktuellem MSE und vorherigem 0 1 AS delta - Anfangsinkrement 0 AS-prioritär - Anfangsstartpunkt - REGELN ITERAT 99 BIS ZU A, 1 0 00010 C beliebig, rn Betrag cv, cv KA, 1 priorpt A, 1 Delta A, 1 X beliebig, rn ORDER BY Produkt, rn ASC COALESCE KA, 1 C cv, cv 1-KA, 1 x cv, cv -1, C cv, cv P Produkt, rn X cv, cv -1 SE Produkt, rn POWER C cv, cv - X cv, cv -1, 2 SSE A, 1 SUM SE irgendwelche, jede MSE A, 1 SUM SE irgendwelche, 24 diff A, 1 CASE iteration number WHEN 0 dann NULL ELSE preMSE A, 1 ENTFÜHRUNG A, 1 END preMSE A, 1 MSE A, 1 Delta A, 1 CASE WHEN diff A, 1 0 THEN - abs delta A, 1 2 ELSE abs delta A, 1 END priorpt A, 1 KA, 1 wo Produkt A und rn 1 K MSE ---------- ---------- 599999237 174 016094.
Dieser kostenlose Forex Roboter ist bereit, Ihnen zu helfen, besser zu verkaufen. Wenn Sie bereit sind, mit dem Handel besser zu beginnen, dann ist es Zeit, unsere Forex Roboter zu verwenden Um Ihnen den Anfang zu geben, geben wir einen kostenlosen Forex Roboter an jeden, der sich für unsere wöchentlichen anschließt Newsletter Geben Sie einfach Ihre E-Mail-Adresse und wir schicken Ihnen eine Bestätigungs-E-Mail mit Ihrem kostenlosen Forex Robot. So, was kann diese kostenlose Forex Roboter tun Für den Anfang wird es ein voll automatisiertes System für Sie handeln Sie werden die Freude am Sein in der Forex-Markt auch wenn Sie weg von Ihrem Computer Es ist nur ein Geschmack aber Wenn Sie bereit sind, den nächsten Schritt zu machen, ist einer unserer Premium-Forex-Roboter der einzige Weg zu gehen Sie sind professionell entworfen, um automatisch mit den von uns entwickelten Systemen zu handeln Sehr profitables manuelles handeln Überprüfen Sie heraus, was sie für unsere Kunden letztes Monat ...
Comments
Post a Comment