Früher haben wir diskutiert, wie Rolling Durchschnitte in Postgres schreiben. Durch die populäre Nachfrage zeigten Ihnen, wie das gleiche in MySQL und SQL Server zu tun. Nun zu decken, wie kommentieren laute Charts wie folgt: Mit einem 7-Tage vorherigen durchschnittlichen Zeile wie folgt: Die große Idee Unsere erste Grafik oben ist ziemlich laut und schwer zu nützlichen Informationen zu bekommen. Wir können es glätten, indem wir einen 7-Tage-Durchschnitt auf die zugrundeliegenden Daten zeichnen. Dies kann durch Fensterfunktionen, Self-Joins oder korrelierte Unterabfragen erfolgen - decken die ersten beiden ab. Nun beginnen mit einem vorangegangenen Durchschnitt, was bedeutet, dass der Durchschnittspunkt am 7. des Monats der Durchschnitt der ersten sieben Tage ist. Optisch verschiebt sich die Spitze im Graphen nach rechts, da eine große Spitze über die nächsten sieben Tage gemittelt wird. Erstens eine Zwischenzahltabelle erstellen Wir wollen einen Durchschnittswert ü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 Signups-Tabelle wie folgt erstellen: In Postgres und SQL Server können Sie diese als CTE verwenden. In MySQL können Sie sie als temporäre Tabelle speichern. Postgres Rolling Average Glücklicherweise hat Postgres Fensterfunktionen, die der einfachste Weg sind, einen laufenden Durchschnitt zu berechnen. Diese Abfrage setzt voraus, dass die Daten keine Lücken aufweisen. Die Abfrage ist Mittelung über die letzten sieben Zeilen, nicht die letzten sieben Termine. Wenn Ihre Daten Lücken aufweisen, füllen Sie sie mit generateseries oder Beitritt gegen eine Tabelle mit dichten Datumszeilen. MySQL Rolling Average MySQL fehlt Fenster-Funktionen, aber wir können eine ähnliche Berechnung mit Self-Joins zu tun. Für jede Zeile in unserem Zählungstabelle verbinden wir jede Zeile, die innerhalb der letzten sieben Tage war, und nehmen den Durchschnitt. Diese Abfrage behandelt automatisch Datumslücken, da wir Zeilen innerhalb eines Datumsbereichs anstelle der vorhergehenden N Zeilen betrachten. SQL Server Rolling Average SQL Server verfügt über Fensterfunktionen, so dass die Berechnung der rollenden Durchschnitt kann entweder in der Postgres-Stil oder MySQL-Stil erfolgen. Zur Vereinfachung wurden die MySQL-Version mit einem Self-Join. Dies ist konzeptionell das gleiche wie in MySQL. Die einzigen Übersetzungen sind die dateadd Funktion und explizit benannt Gruppe nach Spalten. Andere Mittelwerte Wir konzentrierten uns auf den 7-tägigen nachlaufenden Durchschnitt in diesem Beitrag. Wenn wir uns den 7-Tage-Leitdurchschnitt anschauen wollten, so einfach wie die Daten in die andere Richtung sortieren. Wenn wir bei einem zentrierten Durchschnitt, wed Verwendung aussehen wollte: Postgres: Reihen 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) MySQL Foren. Anfänger. Moving Average mit mysql Datum: 2. August 2005 10.14 Wie mache ich ein 3-Monats-Durchschnitt mit Mysql habe ich zerlegt und vereinfacht die SQL-Abfrage auf die folgenden: SELECT b. LastDayOfMonth, (SELECT Avg (t2.SumSumNoOfDaysOpen) FROM t AS t2 WHERE t2.LastDayOfMonth Zwischen DATEADD (b. LastDayOfMonth, INTERVAL 3 Monat) und b. LastDayOfMonth) AS MovingAverageOver3Months FROM t AS b 1146 - Tabelle sql3.b doesnt existieren hier Tabelle Tabelle t LastDayOfMonth SumCountID SumSumNoOfDaysOpen 2003-07- 31 00:00:00 1 70 2003-08-31 00:00:00 0 0 2003-09-30 00:00:00 0 0 2003-10-31 00:00:00 0 0 2003-11-30 00 : 00: 00 2 170 2003-12-31 00:00:00 0 0 2004-01-31 00:00:00 0 0 2004-02-29 00:00:00 2 178 2004-03-31 00:00 : 00 0 0 2004-04-30 00:00:00 2 32 2004-05-31 00:00:00 0 0 2004-06-30 00:00:00 1 98 2004-07-31 00:00:00 0 0 2004-08-31 00:00:00 3 166 2004-09-30 00:00:00 5 388 2004-10-31 00:00:00 3 229 2004-11-30 00:00:00 1 72 2004-12-31 00:00:00 0 0 2005-01-31 00:00:00 2 109 2005-02-28 00:00:00 0 0 2005-03-31 00:00:00 1 126 2005- 04-30 00:00:00 2 231 2005-05-31 00:00:00 0 0 2005-06-30 00:00:00 0 0 2005-07-31 00:00:00 1 139 Zusätzliche Anmerkung: I (T2.SumSumNoOfDaysOpen) mit (sum (t2.SumSumNoOfDaysOpen)) (sum (t2.SumCountID)) zu ersetzen, sobald ich dieses korrigiert bekomme.
No comments:
Post a Comment