Om du ser det här meddelandet har din webbläsare antingen inaktiverat eller stöder inte JavaScript. Om du vill använda de fullständiga funktionerna i det här hjälpsystemet, t. ex. sökning, måste din webbläsare ha JavaScript-stöd aktiverat. Vågade rörliga medelvärden. Med enkla rörliga genomsnittsvärden kan varje datavärde i fönstret där beräkningen utförs ges lika stor vikt eller vikt Det är ofta fallet, särskilt i finansiell prisdataanalys, att mer kronologiskt aktuella data borde ha större vikt. I dessa fall är viktat rörligt medelvärde eller exponentiellt rörligt medelvärde - se följande ämnesfunktionalitet är ofta föredragen. Titta på samma tabell med Försäljningsdatavärden i tolv månader. För att beräkna ett Viktat Flyttmedelvärde. Beräkna hur många dataintervaller som deltar i beräkningsfönstret, dvs storleken på beräkningsfönstret. Om beräkningsfönstret sägs vara n multipliceras det senaste datavärdet i fönstret med n, nästa senast multiplie d av n-1, värdet före det multiplicerat med n-2 och så vidare för alla värden i fönstret. Ange summan av alla multiplicerade värden med summan av vikterna för att ge det viktade rörliga genomsnittet över det fönstret . Placera det vägda rörliga genomsnittsvärdet i en ny kolumn i enlighet med den bakomliggande genomsnittliga positioneringen som beskrivs ovan. För att illustrera dessa steg, överväga om ett 3 månaders viktat rörligt genomsnitt av försäljning i december krävs med ovanstående tabell med försäljningsvärden. Termen 3-månaders innebär att beräkningsfönstret är 3, därför borde den beräknade vägen för algoritmen för viktad rörelse för detta fall vara. Eller om ett 3-månatviktat rörligt medelvärde utvärderades över hela det ursprungliga dataintervallet, skulle resultaten vara.3 - month Viktad Flytta Average. Using ett enkelt glidande medelvärde för att släta ut data är en ganska populär teknik det är så illa det primära exemplet i SQL Anywhere Help är långt ifrån enklare. Vad gör det exemplet så komplicerat förutom problemformuleringen, att jag s beräknar det glidande genomsnittet av all produktförsäljning, per månad, år 2000. Här är det som gör det komplext. två referenser till AVG-funktionen. En GRUPP AV, som i sig gör bara om vilken som helst SELECT-huvudskrapa. en snygg WINDOW clause. a WINDOW-klausul som inte ens använder WINDOW-sökordet så att de oinitierade personerna som behöver exempel mer än någon annan är det inte uppenbart att en WINDOW är involverad alls. Inte bara någon Windows-klausul, tänker dig, men en som innehåller varje enskild komponent som du kan koda i en WINDOW. a PARTITION BY. a RANGE-klausul, inte en enkel ROWS-klausul, men fullblåst RANGE-klausul, en som har ett intimt förhållande med ORDER BY Jag vet vad en rad är, men vad redigeras är en RANGE. Men vänta, det är mer Valet av RANGE över ROWS i det här exemplet är avgörande för korrekt sökning av frågan för en mer fullständig diskussion av det här exemplet, se exempel 23 - Beräkning av ett rörligt medelvärde i Glenn Paulleys utmärkta OLAP-vitt papper. Låt oss nu komma tillbaka på spår. A Verkligen riktigt enkelt rörande medelvärde. Följande exempel visar 10 dagars värde av data tillsammans med det glidande medlet av dagens värde och igår s WINDOW-klausulen på linjer 21 till 23 definierar ett rörligt fönstret som innehåller två rader idag s raden CURRENT ROW och igår s row 1 PRECEDING. theWINDOW ORDER BY-klausulen bestämmer vad PRECEDING betyder föregående rad av and. the ROWS-klausulen bestämmer storleken på fönstret alltid två rader. Uttrycket AVG OVER twodays på rad 19 hänvisar till WINDOW-klausulen med namnet, och det berättar att SQL Anywhere ska beräkna genomsnittet av de två värdena som finns i 2-rader skjutfönstret, för varje rad i resultatuppsättningen. Så för 2012 -02-02 medeltalet 10 och 20 är 15 000000.för 2012-02-03 är genomsnittet 20 och 10 15 000000.för 2012-02-04 är genomsnittet 10 och 30 20 000000.för 2012-02 -10 genomsnittet 10 och 60 är 35 000000.Oops, vad sägs om den första roden. 2012-02-01 raden har inte en föregående rad, så vad är genomsnittet över det rörliga fönstret. Enligt Glenn Paulley s vita Papper vid ett rörligt fönster antas att rader med Null-värden existerar före första raden och efter sista raden i inpu t. That betyder när det rörliga fönstret har 2012-02-01 som CURRENT ROW innehåller raden 1 PRECEDING NULL-värden och när SQL Anywhere beräknar en AVG som innehåller ett NULL-värde, räknar det inte med att NULL alls inte är i täljare eller i nämnaren vid beräkning av genomsnittet Här är bevis Det är därför twodayaverage 10 000000 för första raden 2012-02-01. Skickas av Breck Carter kl. 47. Detta är en Evergreen Joe Celko fråga. Jag ignorerar vilken DBMS-plattform som är men i alla fall kunde Joe svara för mer än 10 år sedan med standard SQL. Joe Celko SQL-pussel och svar citation Det senaste uppdateringsförsöket antyder att vi skulle kunna använda predikatet för att konstruera en fråga som skulle ge oss ett glidande medelvärde. den extra kolumnen eller frågeställningen bättre Frågan är tekniskt bättre eftersom UPDATE-metoden kommer att denormalisera databasen. Om de historiska data som registreras inte kommer att förändras och beräkningen är det rörliga genomsnittet dyrt, kan du överväga att använda kolumn approach. SQL Puzzle query. by all means uniform Du kasta bara till lämplig vikt hink beroende på avståndet från den aktuella tidpunkten Exempelvis vikt 1 för datapoäng inom 24 timmar från nuvarande datapoint vikt 0 5 för datapoäng inom 48 timmar Så faller det anmärker hur mycket efter varandra följande datapoäng som 6 12 och 11 48 är avstånd från varandra Ett användningsfall som jag kan tänka på skulle vara ett försök att släta histogramet där datapunkter inte är täta nog msciwoj 27 maj kl 22 22 22. Jag är inte säker på att Din förväntade resultatutgång visar ett klassiskt enkelt rörligt rullande medelvärde i 3 dagar, till exempel att den första trippeln av siffror per definition ger men du förväntar dig 4 360 och det är förvirrande. Ändå föreslår jag följande lösning, som använder fönsterfunktionen AVG Denna tillvägagångssätt är mycket effektivare och mindre resursintensiv än SELF-JOIN införd i andra svar och jag är förvånad över att ingen har givit en bättre lösning. Du ser att AVG är w rappad med fall då rownum då för att tvinga NULL s i första raderna, där 3 dagars rörande medelvärde är meningslöst. Beslutad 23 februari 16 på 13 12. Vi kan tillämpa Joe Celko s smutsiga vänster yttre anslutningsmetod som citerats ovan av Diego Scaravaggi för att svara på Fråga som det ställdes. Genererar den begärda output. answered jan 9 16 på 0 33. Ditt svar.2017 Stack Exchange, Inc.
Comments
Post a Comment