Friday 11 August 2017

Glidande Medelvärde Ms Sql


Jag har en tabell med timmars produktanvändning hur många gånger produkten används data. Liksom, jag har användardata för 4 olika produkter ProductId från 1 till 4 lagrade för varje timme i produkttabellen. Som du kan tänka dig växer det ständigt Eftersom den nattliga ETL-processen dumpar data för hela föregående dag Om en produkt inte används någon timme på en dag, så vinner rekordet för den timmen t i denna tabell. Om en produkt inte används för hela dagen, Det vann inte någon rekord för den dagen i tabellen jag behöver generera en rapport som ger daglig användning och senaste 7 dagars rullande genomsnitt. Och så ska jag skapa en indexerad vy i SQL-servern 2014 Kan du tänka på en effektiv SQL-fråga för att göra this. asked Sep 18 14 på 21 08. Detta är en Evergreen Joe Celko fråga Jag ignorerar vilken DBMS-plattform som används Men i alla fall kunde Joe svara för mer än 10 år sedan med standard SQL. Joe Celko SQL Puzzles och svar citation Det senaste uppdateringsförsöket föreslår att vi kunde använda predikatet för att konstruera en fråga som skulle ge oss ett rörligt genomsnitt. Är den extra kolumnen eller frågeställningen bättre Frågan är tekniskt bättre eftersom UPDATE-tillvägagångssättet kommer att denormalisera databasen. Om de historiska data som registreras inte går att ändra och beräkna det rörliga genomsnittet är dyrt, kan du överväga att använda kolumninriktningen. SQL-frågfrågan. Med all hjälp enhetligt. Du slänger bara till lämplig vikthink beroende på avståndet från aktuell tidpunkt. Exempelvis, vikt 1 för datapoäng Inom 24 timmar från nuvarande datapoint vikt 0 5 för datapoäng inom 48 timmar Det fallet spelar roll hur mycket sammanhängande 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 maj 27 15 på 22 22. Jag är inte säker på att din förväntade resultatutgång visar klassiskt enkelt rörligt rullande medelvärde i 3 dagar. För e xample, 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önsterfunktion AVG Denna tillvägagångssätt är mycket effektivare och mindre resursintensiv än SELF - JOIN introduceras i andra svar och jag är förvånad över att ingen har givit en bättre lösning. Du ser att AVG är inslaget med fall då rownum sedan tvingar NULL s i första rader, där 3 dagars rörande medelvärde är meningslöst. Svarat 23 februari 16 på 13 12.Vi kan tillämpa Joe Celko s smutsiga vänster yttre anslutningsmetod som nämnts ovan av Diego Scaravaggi för att svara på frågan som den ställdes till. Genomsöker den begärda output. answered jan 9 16 på 0 33. Ditt svar.2017 Stack Exchange, Inc. Exponentiellt glidande medelvärde i T-SQL. Exponentiala glidande medelvärden liknar vägda glidmedelvärden genom att de tilldelar mindre vikt till förändringar för länge sedan och större vikt vid senaste förändringar. Viktiga glidmedel är linjära men exponentiella glidande medelvärden är exponentiella Det vill säga vikten kan uttryckas som en kurva. Det finns ett bra sätt att beräkna exponentiella glidande medelvärden i T-SQL med hjälp av en obodifierad funktion om variabler och körtotal i SQL Server I det här blogginlägget kommer jag att visa hur man använder den metoden att beräkna exponentiell glidande medelvärde i T-SQL, men jag kommer också presentera en metod som använder standardfunktioner i SQL Server. Tyvärr betyder det att använda en loop. I exemplen kommer jag att beräkna ett 9-dagars exponentiellt glidande medelvärde. Exemplen använder databasen TAdb Ett skript för att skapa TAdb kan hittas här. Exponential Moving Average EMA Running Totals Method. Teorin bakom de totala funktionerna i uppdateringar beskrivs i detalj av Jeff Moden i sin artikel. Lösning av löpande totala och ordinära rankproblem. Övriga resurser som Beskriva med hjälp av den här metoden för att beräkna EMA är bloggposten Beräkna rörliga medeltal med T-SQL av Gabriel Priester och forumet efter Exponentiell Moving Average Challenge både på SQL Server Cent ral. Basically, i T-SQL kan du uppdatera variabler såväl som kolumner i en uppdateringsuppsättning. Uppdateringarna görs rad för rad internt av SQL Server. Denna rad för radbeteende är det som gör att man kan beräkna en löpande total. Detta exempel visar hur det Works. Note att ColumnRunningTotal är en löpande summa av ColumnToSum. Using denna metod kan vi beräkna EMA9 med denna T-SQL. Beräkningen av EMA är ganska enkel Vi använder nuvarande rad och föregående men med större vikt till den aktuella raden The Vikt beräknas med formeln 2 1 9, där 9 är parametern för längden på EMA För att beräkna EMA9 för rad 10 ovan är beräkningen. I detta fall får den aktuella raden 20 av vikten 2 1 9 0 2 och den föregående raden får 80 av vikten 1-2 1 9 0 8.Du hittar denna beräkning i ovanstående uttalande i CASE-satsen. Exponentiell rörlig genomsnittlig EMA Looping Method. As långt som jag vet, med undantag för den löpande totalsmetoden som skisseras ovan , Det finns inget sätt att beräkna EMA med en uppsättning b Ased SQL-ståndpunkt Därför använder T-SQL nedan en tidslinga för att beräkna EMA9. Resultaten är desamma som i löpande totalvärden exemplet ovan. Som förväntat är den uppsättning baserade löpande totalversionen mycket snabbare än loop-versionen på min Maskinens basbaserade lösning var ungefär 300 ms, jämfört med omkring 1200 med slingversionen. Slingversionen överensstämmer mer med SQL-standarder. Så valet mellan metoderna beror på vad som är viktigast för dig, prestanda eller standarder. Exponentiell rörelse genomsnittet kan användas i trendanalys, som med de andra typerna av glidande medelvärden, Simple Moving Average SMA och Weighted moving average WMA. Det finns också andra beräkningar i teknisk analys som använder EMA, MACD till exempel. Detta blogginlägg är en del av En serie om teknisk analys, TA, i SQL Server Se andra inlägg här. Upplagt av Tomas Lind. Tomas Lind - Konsulttjänster som SQL Server DBA och Database Developer på High Coast Database Solutions AB.

No comments:

Post a Comment