Netezza Gleitenden Durchschnitt


Netezza-Verträge Die nachstehende Tabelle enthält die Statistiken über die Kenntnisse und Erfahrungen von Netezza-Produkten und - Dienstleistungen in IT-Verträgen, die in ganz Großbritannien vertrieben werden. Inbegriffen ist ein Leitfaden für die Auftragnehmer Preise in IT-Verträge angeboten, die Netezza über die 3 Monate bis 13. Januar 2017 mit einem Vergleich zum gleichen Zeitraum in den letzten 2 Jahren zitiert haben. Beachten Sie, dass tägliche Vertragspreise und Stundentarifsätze separat behandelt werden. Bei der Berechnung der durchschnittlichen Vertragspreise werden die Tagespreise nicht von den angegebenen Stundensätzen oder umgekehrt abgeleitet. Die nachstehenden Zahlen stellen den IT-Auftragnehmer-Arbeitsmarkt im Allgemeinen dar und sind nicht repräsentativ für Auftragnehmerraten bei IBM Netezza. 3 Monate bis 13 Januar 2017 Gleicher Zeitraum 2016 Die Nachfrageentwicklung von Vertragsprodukten zählt Netezza im Verhältnis zu allen IT-Verträgen mit einem Spiel in der Kategorie Vendoren. Netezza Daily Rate Trend Diese Grafik zeigt die 3-Monats-gleitenden Durchschnitt für die täglichen Raten in IT Contract Jobs zitiert Netezza in Großbritannien zitiert. Netezza Tagesrate Histogramm Diese Tabelle bietet ein Histogramm der täglichen Raten in Vertrag IT-Arbeitsplätze zitiert Netezza innerhalb Großbritanniens über die 3 Monate bis 13. Januar 2017 zitiert. Netezza Stundensatz-Trend Diese Grafik zeigt die 3-Monats-gleitenden Durchschnitt für Stundensätze in IT zitiert Auftragnehmer Arbeitsplätze zitieren Netezza in Großbritannien. Netezza Top 19 Kontraktlokationen Die nachstehende Tabelle zeigt die Nachfrage und stellt einen Leitfaden für die medianen Vertragspreise dar, die in den IT-Arbeitsplätzen zitiert wurden und Netezza innerhalb des Vereinigten Königreichs in den drei Monaten bis zum 13. Januar 2017 angeben. Die Spalte Rangänderung gibt einen Hinweis auf die Änderung in Nachfrage innerhalb jedes Standortes auf der Grundlage der gleichen 3 Monate Zeitraum im vergangenen Jahr. Rang Änderung auf der gleichen Zeitraum Letztes Jahr Matching Vertrag IT Job-Anzeigen Median Tagespreis Letzte 3 Monate Berechnen von Werten in einem rollenden Fenster in Transact SQL Dwain Camps Berechnen von Werten in einem rollenden Fenster in SQL Jedes Mal, wenn Sie Werte über mehrere Zeilen in SQL kombinieren müssen, Das Problem kann eine Herausforderung sein, vor allem, wenn es um die Leistung geht. Wir konzentrieren uns auf das rollende zwölfmonatige Gesamtproblem, aber unsere Methoden können auf jedes Zeitfenster (z. B. 3 Monate) oder auf Durchschnittswerte und andere Aggregationen über diese Zeitfenster angewendet werden. Eine rollende Summe für einen Monat ist die Summe für diesen Monat plus die vorherigen Monate im Zeitfenster oder NULL, wenn Sie die Werte für alle vorherigen Monate innerhalb des Zeitfensters haben. In früheren Versionen von SQL Server mussten Sie durch einige Reifen springen, um eine Methode zu finden, die gut funktioniert, aber SQL 2012 bietet einige neue Features, die es einfacher machen. In beiden Fällen gibt es mehrere gültige Lösungen. Was ist die schnellste und effizienteste We8217ll versuchen, diese Frage in diesem Artikel zu beantworten. Wir werden in SQL 2012 arbeiten. Wenn Sie möchten, folgen Sie, können Sie die Sample Queries. sql-Ressource you8217ll finden Sie beigefügt. Daten-Setup und Erklärung des Business-Problems Häufig finden Sie sich mit vielen Transaktionen innerhalb eines Monats, aber in unserem Fall gehen wir davon aus, you8217ve bereits gruppiert Ihre Transaktionen für jeden Monat. We8217ll weisen unseren PRIMARY KEY einem DATE-Datentyp zu und enthalten einige Werte, über die wir rollende zwölfmonatige Summen akkumulieren möchten. Dies erzeugt auch einen geringfügig unterschiedlichen Abfrageplan, so dass wir interessiert sein werden, um zu sehen, wie seine Leistungsergebnisse mit anderen vorgeschlagenen Lösungen vergleichen. So viel zu traditionellen Lösungen, und meine Entschuldigungen, wenn ich zufällig zu einem Ihrer Favoriten übersehen, aber fühlen Sie sich frei, es Code und fügen Sie es auf die Performance-Test-Kabelbaum we8217ll später zu sehen, wie es Tarife. Lösung 5: Verwenden Sie ein schrulliges Update Wenn you8217ve noch nie von der Quirky Update (QU) gehört und wie es auf Probleme wie das Ausführen von Summen angewendet werden kann, empfehle ich Ihnen dringend, lesen Sie diese herausragenden Artikel von SQL MVP Jeff Moden. Berechtigung, die laufenden Gesamt - und Ordinal-Rangprobleme zu lösen. Bevor wir fortfahren, sollten wir beachten, dass es diejenigen gibt, die darauf bestehen, dass die QU-Methode ein undokumentiertes Verhalten von SQL Server darstellt und so nicht vertrauenswürdig ist. Wir können sagen, dass die Syntax eindeutig durch den Eintrag MS Books On Line für die UPDATE-Anweisung für SQL-Versionen 2005, 2008 und 2012 beschrieben wird. Tatsächlich geht es weiter zurück. Ich habe es erfolgreich in SQL Server 2000 verwendet, aber es wurde von Sybase geerbt und war in der ersten SQL Server-Version, die jemals veröffentlicht wurde. Zu den Neinsagen I8217ll sagen, dass das Verhalten 8220undocumented8221 ist zumindest konsistent in allen Versionen und es gibt wahrscheinlich wenig Grund zu vermuten, dass es abgelehnt wird oder ändern in zukünftigen Versionen von MS SQL. Betrachten Sie sich selbst gewarnt Wenn Sie jemals in Erwägung ziehen, eine QU verwenden, um jedes Problem zu lösen, müssen Sie sorgfältig beachten Sie die vielen Regeln, die gelten (auch enthalten in der referenzierten Artikel von Jeff). Die wichtigsten, die in dieser Abfrage behandelt werden, können wie folgt zusammengefasst werden: Die Tabelle muss über einen gruppierten Index verfügen, der die Reihenfolge der Quellzeilen für den Zeitraum angibt, den Sie durchlaufen möchten. Die Tabelle muss eine Spalte haben, in die Sie die aggregierte laufende Summe einfügen können. Wenn Sie die Aktualisierung durchführen, müssen Sie die Tabelle mit dem TABLOCKX-Abfragehinweis sperren, um sicherzustellen, dass niemand sonst in einem INSERT s, DELETE s oder UPDATE s vor you8217re durch bekommt. Sie müssen verhindern, dass SQL versucht, die Abfrage mit dem Hinweis OPTION (MAXDOP 1) zu parallelisieren. Da ein rollierender Zwölfmonatsdurchschnitt einfach eine laufende Summe in Verkleidung ist, können wir eine Spalte zu unserer Tabelle hinzufügen und eine QU-Anfrage anwenden, um unsere Berechnung durchzuführen. Ich muss gestehen, dass dies ein wenig chaotisch aussieht, mit all den Variablen, die Sie brauchen, um DECLARE. Grundsätzlich, was wir tun, ist, den Überblick über die letzten zwölf (lagging) Werte zu halten, um die 12. ein (wo die Rolling12Months Spalte zugeordnet ist) von dem, was sonst ein QU läuft insgesamt zu entfernen, wie in Jeff8217s Artikel beschrieben. Wir haben große Hoffnungen für seine Geschwindigkeit, da es bekannt, dass die schnellste Methode zur Lösung der laufenden Summen Problem ist. Wieder einmal sollten Sie sich davon überzeugen, dass die Ergebnisse mit früheren Lösungen übereinstimmen und ja diese Lösung immer noch das gleiche in SQL 2012 verhält. Wenn you8217re mit mir so weit, können Sie auch fragen sich 8220what geschieht, wenn ich mehrere Laufzeit zu berechnen Zwölf Monate Summen über verschiedene partitions8221 Dies ist relativ einfach für alle anderen Lösungen vorgestellt, aber vorschlagen, ein bisschen eine Herausforderung mit der QU. Die Antwort dazu finden Sie in der angehängten Ressourcendatei: Quirky Update Partitioned. sql. SQL 2012-Lösungen Bis jetzt wird alles, was wir getan haben, in SQL 2008 funktionieren. Die einzige Sache, die wir getan haben, die nicht in SQL 2005 unterstützt wird, sind die Initialisierungen der Variablen, die wir im QU-Ansatz deklarieren. Nun let8217s sehen, was neue Features SQL 2012 hat, die auf dieses Problem angewendet werden können. Lösung 6: Verwenden eines Fensterrahmens Unsere erste SQL 2012-Lösung (6) zeigt, wie ein Fensterrahmen verwendet wird, der 11 Zeilen vor der aktuellen Zeile beginnt, über die aktuelle Zeile zu SUM unsere gewünschten Ergebnisse. Noch einmal sind die zurückgegebenen Ergebnisse die gleichen, aber der Abfrageplan ist ganz anders als für die vorherige SQL 2012-Lösung aber wir8217re nicht besonders optimistisch, dass dieser Ansatz wird eine vernünftig durchführende Alternative, weil der Anzahl der 8220look-backs8221 benötigt, um es funktionieren . Performance-Vergleich der Methoden Der eigentliche Test, um zu sehen, wie mehrere Lösungen durchführen, ist die tatsächlichen Ausführungszeiten in einem ruhigen Server mit einem Testkabelbaum mit vielen Zeilen zu überprüfen. Unser Testkabelbaum wird zusammen mit den Modifikationen von Solution 1 und 2 angezeigt (siehe Kommentare im Code), um: die Ergebnisse in eine temporäre Tabelle einzufügen, um den Zeitaufwand für die Rückgabe der Zeilen auf die Ergebnisse von SQL Server Management Studio8217 zu vermeiden Gitter. Entfernen Sie die DATE-Arithmetik, da es bei der Erstellung von Multi-Million-Zeilen-Testkabeln schwierig ist, viele einzelne Monate zu generieren, sodass die Spalte Datumstabelle zu einem BIGINT-Datentyp überarbeitet wurde. Für die verbleibenden Lösungen (2 8211 6) haben wir die CPU und die abgelaufene Zeit von 1M mit 4M Zeilen gezeichnet. Interpretation der Ergebnisse vergangen und CPU-Zeiten scheinen über die verschiedenen Methoden in Bezug auf ihre Bestellung konsistent sein. Alle sind linear skaliert. Das schrullige Update, vorausgesetzt, Sie können es verstehen und alle zugehörigen Regeln, scheint die schnellste verfügbare Lösung für die Lösung dieses Problems sein, auch unter Berücksichtigung der neuen Funktionen in SQL 2012. In SQL 2012 ist der Fensterrahmen Ansatz sicherlich ordentlich, Kompakt und elegant, aber leicht Spuren der Quirky Update-Lösung über die Zeilen, die wir getestet haben. Diese Testergebnisse scheinen zu einem früheren Test auf Laufende Summen in SQL 8220Denali8221 CTP3 durch Microsoft Certified Master Wayne Sheffield in seinem Blog entsprechen. Wenn Sie mit einer früheren Version von SQL (2005 oder 2008) stecken, und aus irgendeinem Grund können Sie sich mit einem Quirky Update (z. B. wenn Sie dieses undokumentierte Verhalten nicht vertrauen), sind die schnellsten Lösungen, die Ihnen zur Verfügung stehen, entweder die CROSS APPLY TOP oder Mit einer korrelierten Unterabfrage, da beide von denen schien in einer engen Bindung an der ganzen Linie. Es scheint, dass das 8220traditional8221 INNER JOIN etwas zu vermeiden ist. Es wird wahrscheinlich nur noch schlimmer, wenn Sie Datum Arithmetik innerhalb der JOIN8217s ON-Klausel tun müssen. Ebenso, mit einem Tally-Tabelle oder mehrere LAGs (SQL 2012) war sicherlich nicht der Weg zu gehen. Wir haben nicht CURSOR-basierte Lösungen erforscht, aber Sie können zurück zu dem Artikel, der auf laufenden Summen verwiesen wird, zurückkehren, um eine Vorstellung davon zu erhalten, wie sie in diesem Fall durchführen können. I8217ve sahen auch einige Lösungen, die eine rekursive Common Table Expression (rCTE) verwenden, aber ich sicherlich wouldn8217t auf ihre Leistung im Vergleich zu den QU-oder Fensterrahmen-Lösungen wetten. Es gibt viele Möglichkeiten, um Werte innerhalb eines rollenden Fensters in SQL zu berechnen und es gibt einige klare Leistung Gewinner unter ihnen. Wir hoffen, dass Sie diesen Leitfaden für die verfügbaren Methoden interessant und informativ gefunden haben. Gesamt: 31 Durchschnitt: 4.65 Dwain Camps ist seit vielen Jahren Projektleiter. Weil Leistung von Anwendungen ein kritischer Erfolgsfaktor für Projekte sein kann, hat er Evangelisierung auf der Notwendigkeit, leistungsstarke SQL zu entwickeln. Durch Mentoring und Authoring Artikel auf SQL, hofft er, eine zukünftige Generation von Software-Ingenieure auf die richtige und falsche Wege, um SQL-Code liefern zu trainieren. Er hat auch ein besonderes Interesse an der Entwicklung von Lösungen für komplexe, datenintensive Probleme mit Hochleistungs-SQL, weil die deklarativen Charakter von SQL ermöglicht die Entwicklung von algorithmisch einzigartigen Lösungen, die Verfahrenssprachen nicht in der Lage sein. Folgen Sie Dwain auf Twitter Sehr gut Großer Artikel Ich war überrascht, dass LAG () so schlecht. Ich denke, jeder Aufruf erfolgt separat, anstatt ausgewertet und optimiert wie ein Fenster. Große Erklärung Ich stimme zu, das ist eine große Erklärung der verschiedenen Möglichkeiten, um Werte in einem rollenden Fenster zu berechnen. Wenn Sie diese Beispiele auf SQL 2012 testen, müssen Sie MyTable mit RollingTotalsExample ändern. Vielen Dank, Mr. Camps Tally-Methode Hallo Dwain, bemerkte ich, dass Ihre Tally-Tabelle Abfrage verursachte einen Tabellenspool-Operator und dachte, Sie könnten in Erwägung ziehen, die Tally Teil einer Dates-Tabelle wie folgt: SELECT GroupingDate, ValueMAX (CASE GroupingDate WHEN Datum DANN a. Value END), Rolling12MonthsCASE WENN ROWNUMBER () OVER (ORDER BY GroupingDate) lt 12 THEN NULL ELSE SUM (Wert) Ende in ResultsSoln2 VON RollingTotalsExample ein CROSS APPLY (mdash die DATE arithmetischen Werte (Datum entfernen), (Date1), (Date2), (date3), (Date4), (Date5), (Date6), (Date7), (Date8), (Date9), (Datum10), (Date11)) c (GroupingDate) GROUP BY GroupingDate MIT GroupingDate lt MAX (Datum) ORDER BY GroupingDate (Entschuldigt, wenn Formatierung ist schlecht ndash keine Vorschau) Diese Änderung noch wouldnrsquot machen es ein Kandidat, aber macht eine massive Verbesserung, dass queryhellip Danke für die Kommentare Danke Joe und Nic. Irsquom froh, dass Sie den Artikel interessant fanden. Joe: Auch ich war überrascht über die Ergebnisse der LAG und es macht mich fragen, was der Break-even-Punkt wäre. Vielleicht 3 Monate vielleicht nicht so schlimm, aber es ist immer noch schwer zu glauben, es könnte schneller als die QU. Tally Tables MM: Aus irgendeinem Grund habe ich eine persönliche Vorliebe für Inline-Tally-Tabellen, aber Ihre Ergebnisse sind interessant, wenn nur für andere Fälle zu berücksichtigen. Assistance mit Moving Annual Total Mein erster Beitrag. Ich muss die Moving Annual Summe für den obigen Wert für die vorangegangenen 12 Monate berechnen, wobei dieser Monat Monat 12 ist. Ich muss dann die Moving Annual Summe für die 12 Monate davor erhalten. Mit der Idee zu vergleichen MAT für diesen Monat mit dem entsprechenden Monat im letzten Jahr, und für jeden vorangegangenen Monat. Mein Versuch gab mir dies: Mit CTE als (SELECT rnum ROWNUMBER () Über (sortiert nach Datum) Datum Wert Rolling12MonthsCASE WENN ROWNUMBER () OVER (ORDER BY Datum) gt 11 THEN SUM (Wert) OVER (ORDER BY Datum Reihen zwischen.. 11 PRECEDING uND AKTUELLE ROW) ENDE vON RollingTotalsExample) Wählen Sie aus CTE (Select MRNUM max (rnum) von CTE) DeMax Wo rnum zwischen MRNUM ndash 23 und MRNUM Mit der Fähigkeit, die Waren Aussage zu ändern, um nachzudenken, ob ich in diesem Jahr wollen oder die vorheriges Jahr. Meine echten Daten hat das Datum wie in Integer 201409, die ich glaube, wird das Leben für mich leichter machen, wie ich subtrahieren kann 100, um das Vorjahr zu bekommen. Ausgezeichneter Artikel und jede mögliche Hilfe würde geschätzt. Das ist meine Arbeitslösung (mit etwas Lärm) mdash 12 Monate Summen Rollen mit SQL 2012 und einen Fensterrahmen IF OBJECTID (lsquotempdb..PreviousYearrsquo) IS NOT NULL DROP TABLE previousYear CTE als (SELECT rnum ROWNUMBER () Über (Sortiert nach Datum ). Datum. Wert Rolling12MonthsCASE WENN ROWNUMBER () OVER (ORDER BY Datum) gt 11 THEN SUM (Wert) OVER (ORDER BY Datum Reihen zwischen 11 vor und CURRENT ROW) ENDE vON RollingTotalsExample) Wählen Sie pyRowNum ROWNUMBER () Über (Bestellung von MRNUM ). . SStart mRNum ndash 24. eend MRNUM ndash 12 in previousYear Von CTE (Select MRNUM max (rnum) von CTE) DeMax Wo rnum zwischen MRNUM ndash 23 und MRNUM ndash 12 mdash Rollen 12 Monate Summen mit SQL 2012 und einen Fensterrahmen IF OBJECTID (lsquotempdb..ThisYearrsquo) IS NOT NULL DROP TABLE ThisYear CTE als (rnum ROWNUMBER () Über (Reihenfolge nach Datum SELECT). Datum. Wert. Rolling12MonthsCASE WENN ROWNUMBER () OVER (ORDER BY Datum) gt 11 THEN SUM (Wert) OVER (ORDER BY Datum ROWS ZWISCHEN 11 PRECEDING und CURRENT ROW) END FROM RollingTotalsExample) Wählen Sie tyRowNum ROWNUMBER () Over (order by mRNum). . SStart mRNum ndash 11. eend MRNUM in ThisYear Von CTE (Select MRNUM max (rnum) von CTE) DeMax Wo rnum zwischen MRNUM ndash 11 und MRNUM Wählen Sie aus ThisYear ty Links previousYear py auf ty. tyRowNum py. pyRowNum Join Diese können Irsquom arbeiten nicht in der Nähe eines comp mit Sql-Zugriff jetzt, so dass ich canrsquot Test es (es kann einige typossyntax Fehler). SELECT T. DateKey, AVG (T. ValueField) OVER (ODER VON T. DateKey ASC ZWISCHEN 365 PRECEDING AND AND CURRENT ROW) AS YMAValueField VON Table AS T ORDER BY T. DateKey ASC Falls AVG eine der Aggregatfunktionen nicht unterstützt Mit BETWEEN Bereich (Ich weiß, SUM unterstützt wird). SELECT T. DateKey, SUM (T. ValueField) OVER (ODER VON T. DateKey ASC ZWISCHEN 365 PRECEDING AND AND CURRENT ROW) CASE WHEN DATEDIFF (Tag, Startdatum, T. DateKey) lt 365 THEN DATEDIFF (Tag, Startdatum, T. DateKey) ELSE 365 END AS YMAValueField VON Table AS T ORDER BY T. DateKey ASC Einfache Diskussion Profis Melden über 200.000 Microsoft Join, und erhalten vollen, freien Zugang zu technischen Artikeln, unsere zweimal monatlich Einfache Diskussion Newsletter und kostenlose SQL-Tools. Besuchen Sie unsere Bibliothek mit Artikeln, um die Muster und Praktiken zu entdecken, die Sie benötigen, um zu agilen Methoden der Datenbanklieferung zu gelangen. Erfahren Sie, wie Sie den Prozess der Erstellung, Prüfung und Bereitstellung Ihrer Datenbankänderungen automatisieren, um das Risiko zu reduzieren und den Lieferzyklus zu beschleunigen. Top bewertete aktuelle Artikel in T-SQL-Programmierung Verwandte Artikel Auch in SQL Mit dem Aufstieg von NoSQL-Datenbanken, die Aspekte der SQL für die Abfrage ausnutzen und umfassende Transaktionalität umfassen, besteht die Gefahr, dass die Daten-Dokument-Modelle hierarchische Natur eine grundlegende verursachen Konflikt mit relationaler Theorie Wir forderten unseren relationalen Experten, Hugh Bin-Haad, einen schwierigen Bereich für die Datenbank theorists. hellip Read more Auch in SQL Server Jeder SQL Server Database-Programmierer muss mit den Systemfunktionen vertraut sein. Diese reichen von der sublime (wie Zeilenzahl oder Identität), um die lächerliche (IsNumeric ()) Robert Sheldon bietet einen Überblick über die am häufigsten von ihnen verwendet. hellip Lesen Sie mehr Auch in T-SQL-Programmierung Um in vollem Umfang nutzen zu können Im Systemkatalog, um mehr über eine Datenbank zu erfahren, müssen Sie mit den Metadaten-Funktionen vertraut sein. Sie sparen viel Zeit und Tippen beim Abfragen der Metadaten. Sobald Sie den Aufruf dieser Funktionen erhalten haben, scheint der Systemkatalog plötzlich einfach zu bedienen, wie Robert Sheldon in diesem Artikel demonstriert. hellip Lesen Sie mehr Auch in T-SQL-Programmierung Ob Sie in einer prozeduralen Sprache wie PowerShell oder in T-SQL arbeiten , Gibt es etwas etwas lästig, wenn es darum geht, mit Parametern umzugehen, die Listen sind, oder schlimmer mit Bereichen unter den Werten. In der Tat, sobald Sie eine Möglichkeit haben, mit ihnen umzugehen, können sie bequem sein, vor allem, wenn Bridging der Kluft zwischen Anwendung und der Datenbank. Phil Factor zeigt, wie man mit ihnen umgehen. hellip Lesen Sie mehr Kopie 2005 - 2017 Red Gate Software Ltd Was denken Sie über das neue Simple Talk Geben Sie uns Ihr FeedbackIm mit Business Objects Webi SP2Prod Pack. Ich versuche, herauszufinden, wie man eine gleitende durchschnittliche Berechnung (sagen wir für 3 Tage vor), so kann ich es neben der tatsächlichen Maßnahme Im Bericht von Tag. Meine Daten sehen beispielsweise folgendermaßen aus: Datum Betrag 1107 100 2107 200 3107 150 4107 300 5107 75 6107 100 Das obige Beispiel macht einen schönen Liniendiagramm. Aber ich möchte auch den gleitenden Durchschnitt hierzu verfolgen (zB 1107 wäre 100, 2107 wäre (100 200) 2 150, 3107 wäre (100 200 150) 3 150, 4107 wäre (200 150 300) 3 216,66. Aber ich kann nicht herausfinden, was die Webi forumla würde, diese gehen zurück 3 Tage zu einer Zeit zu berechnen. Bitte helfen - dies ist mein Kopf in

Comments