Friday, 14 July 2017

Berechnen Gleit Durchschnitt In Sql Server


Ich arbeite mit SQL Server 2008 R2 und versuche, 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 eindeutig. Für jede TransactionID. Ich möchte den Durchschnitt für Spaltenwert berechnen, über vorherige 250 Datensätze. Also für TransactionID 300, sammle alle Werte aus vorherigen 250 Zeilen (Ansicht wird absteigend von TransactionID sortiert) und dann in Spalte MovAvg das Ergebnis des Mittelwertes dieser Werte schreiben. Ich bin auf der Suche nach Daten in einer Reihe von Datensätzen zu sammeln. Fragte am 28. Oktober 14 um 20: 58 Wir haben uns darüber im Klaren, wie wir rollende Durchschnitte in Postgres schreiben können. Durch die beliebte Nachfrage zeigten Sie, wie Sie das gleiche in MySQL und SQL Server zu tun. Nun, wie man kommentiert laute Charts wie folgt: Mit einer 7-Tage-Vor-durchschnittliche Zeile wie folgt: Die große Idee Unsere erste Grafik oben ist ziemlich laut und schwer zu nützlichen Informationen aus. Wir können es glätten, indem wir einen 7-tägigen Durchschnitt über die zugrunde liegenden Daten zeichnen. Dies geschieht mit Fensterfunktionen, Selbstverknüpfungen oder korrelierten Unterabfragen - gut decken die ersten beiden. Grasen Sie mit einem vorangegangenen Durchschnitt, was bedeutet, dass der durchschnittliche Punkt am 7. des Monats der Durchschnitt der ersten sieben Tage ist. Optisch verschiebt dies die Spikes in der Grafik nach rechts, da eine große Spitze in den folgenden sieben Tagen gemittelt wird. Zuerst eine Zwischenzählertabelle erstellen Wir wollen einen Durchschnitt über die gesamten Anmeldungen für jeden Tag berechnen. Angenommen, wir haben eine typische Benutzer-Tabelle mit einer Zeile pro neuen Benutzer und einem Zeitstempel erstellt, können wir unsere Aggregate unsere Signatur-Tabelle wie folgt erstellen: In Postgres und SQL Server können Sie dies als CTE verwenden. In MySQL kannst du es als temporäre Tabelle speichern. Postgres Rolling Average Glücklicherweise hat Postgres Fensterfunktionen, die die einfachste Möglichkeit sind, einen laufenden Durchschnitt zu berechnen. Diese Abfrage geht davon aus, dass die Termine keine Lücken aufweisen. Die Abfrage ist durchschnittlich in den letzten sieben Reihen, nicht die letzten sieben Termine. Wenn Ihre Daten Lücken haben, füllen Sie sie mit generateseries oder verbinden sich gegen eine Tabelle mit dichten Datumszeilen. MySQL Rolling Average MySQL fehlt Fensterfunktionen, aber wir können eine ähnliche Berechnung mit Selbstverknüpfungen machen. Für jede Zeile in unserem Zählertisch, kommen wir zu jeder Zeile, die in den letzten sieben Tagen war und nehmen Sie den Durchschnitt. Diese Abfrage behandelt automatisch Datumslücken, da wir Zeilen innerhalb eines Datumsbereichs anstatt der vorhergehenden N Zeilen betrachten. SQL Server Rolling Average SQL Server hat Fenster-Funktionen, so dass die Berechnung der rollenden Durchschnitt kann entweder in der Postgres-Stil oder MySQL-Stil durchgeführt werden. Für die Einfachheit, waren die Verwendung der MySQL-Version mit einem Selbst-Join. Das ist konzeptionell das gleiche wie bei MySQL. Die einzigen Übersetzungen sind die dateadd-Funktion und explizit benannte Gruppe nach Spalten. Andere Mittelwerte Wir konzentrierten uns auf den 7-tägigen nachlaufenden Durchschnitt in diesem Beitrag. Wenn wir den 7-tägigen Vorquartal betrachten wollten, war es so einfach wie das Sortieren der Daten in die andere Richtung. Wenn wir einen zentrierten Durchschnitt betrachten wollten, verwenden wir: postgres: Zeilen zwischen 3 vor und 3 nach MySql: zwischen signups. date - 3 und signups. date 3 in MySQL SQL Server: zwischen dateadd (Tag, -3, signups. Datum) und dateadd (Tag, 3, signups. date) SQL Server T-SQL Code, um einen Moving Average zu berechnen Von: Dallas Snider Lesen Kommentare Verwandte Tipps: Mehr Funktionen - Benutzerdefinierte UDF Wie kann ich die Daten in einer Spalte mit einem Gleitender Durchschnitt in T-SQL Können Sie bitte durch ein Beispiel in SQL Server mit T-SQL-Code gehen Wie können wir die Ergebnisse validieren Zeitreihen-Daten können inhärent verrauscht sein und ein guter Weg, um die Daten zu glätten, um einen gleitenden Durchschnitt zu berechnen . Es gibt eine Reihe von Möglichkeiten, um einen gleitenden Durchschnitt in T-SQL zu berechnen, aber in diesem Tipp werden wir einen Weg suchen, um einen gleitenden Durchschnitt zu berechnen, der das Mittelungsfenster x Anzahl der Zeilen hinter und x Anzahl der Zeilen vor dem aktuellen setzt Datenzeile Der Vorteil davon ist, dass es keine Verzögerung in der durchschnittlichen Wert zurückgegeben und der gleitende Mittelwert ist auf der gleichen Zeile mit seinem aktuellen Wert. Beginnen wir mit dem Erstellen einer Tabelle und laden einige Daten mit dem T-SQL unten. Wir haben 361 Datenpunkte, die eine laute Sinuswelle erzeugen. Nach dem Laden der Daten führen wir den folgenden T-SQL-Code aus, um alle Spalten zusammen mit dem gleitenden Mittelwert auszuwählen. Im folgenden Code ist die gleitende durchschnittliche Fenstergröße 15 (7 Zeilen vor der aktuellen Zeile, plus die aktuelle Zeile plus die 7 folgenden Zeilen). Der gleitende Durchschnitt der DataValue-Spalte wird als MovingAverageWindowSize15-Spalte zurückgegeben. Die ORDER BY-Klausel ist äußerst wichtig, um die Daten in der ordnungsgemäß sortierten Reihenfolge zu halten. Wir können die Ergebnisse in Excel kopieren und einfügen, um die Berechnung zu bestätigen. Im Bild unten beginnt das Fenster in Zelle C3 und endet bei C17. Der gleitende Durchschnitt, der durch das T-SQL in diesem Tipp berechnet wird, erscheint in der Zelle D10. Der von Excel berechnete Durchschnitt liegt am unteren Ende und entspricht dem Wert in D10. In der folgenden Abbildung sehen wir die ursprünglichen Datenwerte, die in blau aufgezeichnet sind, wobei der gleitende Durchschnitt rot markiert ist. Nächste Schritte Passen Sie die Größe des gleitenden durchschnittlichen Fensters an, um zu sehen, wie sich das Diagramm ändert. Auch achten Sie darauf, diese anderen Tipps auf T-SQL aus mssqltips auszuprobieren: Letztes Update: 382016

No comments:

Post a Comment