Wednesday 11 October 2017

Moving Average In Sql Abfrage


Dies ist eine Evergreen Joe Celko Frage Ich ignoriere, welche DBMS-Plattform verwendet wird Aber auf jeden Fall Joe war in der Lage, mehr als 10 Jahren mit Standard SQL. Joe Celko SQL Puzzles und Answers Zitat Antwort Diese letzte Update-Versuch schlägt vor, dass wir das Prädikat verwenden könnte Um eine Abfrage zu erstellen, die uns einen gleitenden Durchschnitt geben würde. Wenn die Extra-Spalte oder die Abfrage besser ansprechen Die Abfrage ist technisch besser, weil der UPDATE-Ansatz die Datenbank denormalisieren wird. Wenn jedoch die erfassten historischen Daten nicht ändern und rechnen werden Gleitender Durchschnitt ist teuer, könnten Sie erwägen, die Spalte Ansatz. SQL Puzzle query. by alle bedeutet Uniform Sie nur werfen, um die richtige Gewicht Eimer abhängig von der Entfernung von der aktuellen Zeitpunkt Nehmen Sie zum Beispiel Gewicht 1 für Datenpunkte innerhalb von 24 Stunden aus aktuellen Datenpunkt Gewicht 0 5 für Datenpunkte innerhalb von 48 Stunden Dieser Fall ist wichtig, wie viel aufeinander folgende Datenpunkte wie 6 12 Uhr und 11 48 Uhr voneinander entfernt sind. Ein Anwendungsfall I c Ein Denken wäre ein Versuch, das Histogramm zu glätten, wo Datapoints nicht dicht genug sind msciwoj 27. Mai 15 um 22 22.Ich bin nicht sicher, dass Ihre erwartete Ergebnisausgabe klassisch einfaches Rolling Average für 3 Tage zeigt. Weil zum Beispiel die erste Dreifach von Zahlen nach Definition gibt. aber Sie erwarten 4 360 und es ist verwirrend. Noch doch schlage ich die folgende Lösung, die Fenster-Funktion AVG verwendet Dieser Ansatz ist viel effizienter klarer und weniger ressourcenintensiv als SELF-JOIN in anderen eingeführt Antworten und ich bin überrascht, dass niemand eine bessere Lösung gegeben hat. Sie sehen, dass AVG mit Fall verpackt wird, wenn rownum dann NULLs in den ersten Reihen zwingen wird, wo 3 Tage Moving Average bedeutungslos ist. Erweiterte Feb 23 16 at 13 12.We Kann Joe Celko s schmutzige linke äußere Verknüpfungsmethode anwenden, wie oben von Diego Scaravaggi zitiert, um die Frage zu beantworten, wie es gefragt wurde. Generiert die angeforderten output. answered Jan 9 16 bei 0 33.Your Antwort.2017 Stack Exchange, Inc. Ich arbeite Mit SQL Server 2008 R2 , Versucht, einen gleitenden Durchschnitt zu berechnen Für jeden Datensatz meiner Ansicht nach möchte ich die Werte der 250 vorherigen Aufzeichnungen sammeln und dann den Durchschnitt für diese Auswahl berechnen. Meine Ansichtspalten sind wie folgt. TransactionID ist für jede TransactionID I eindeutig Möchte den Durchschnitt für Spaltenwert berechnen, über vorherige 250 Datensätze So für TransactionID 300, sammle alle Werte aus vorherigen 250 Zeilen Ansicht sortiert absteigend von TransactionID und dann in Spalte MovAvg schreiben das Ergebnis des Durchschnitts dieser Werte, die ich suche Sammeln Sie Daten innerhalb einer Reihe von Datensätzen. Schulden 28. Oktober 14 bei 20 58.Um einen einfachen gleitenden Durchschnitt zu glätten 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-Aussage, das ist berechnen den gleitenden Durchschnitt aller Produktverkäufe, im Monat, im Jahr 2000.Hier s, was macht es komplex. Zu Verweise auf die AVG-Funktion. a GROUP BY was alle von Selbst macht fast jeden SELECT einen 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 bewegtes 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 mit 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.für 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.für 2012-02 -10 der Durchschnitt von 10 und 60 ist 35 000000.Oops, was ist mit der ersten 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 weiß Papier im Falle eines bewegten Fensters wird angenommen, dass Zeilen, die Nullwerte enthalten, vor der ersten Zeile und nach der letzten Zeile in der Inpu existieren T. That bedeutet, wenn das bewegte Fenster hat 2012-02-01 als CURRENT ROW, die 1 PRECEDING Zeile enthält NULL-Werte und wenn SQL Anywhere berechnet eine AVG, die einen NULL-Wert enthält, ist es nicht zählen die NULL überhaupt nicht in der Zähler oder im Nenner bei der Berechnung der durchschnittlichen Hier s Beweis das ist, warum twodayaverage 10 000000 für die erste Zeile 2012-02-01.Posted von Breck Carter um 3 47 PM.

No comments:

Post a Comment