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 Pussel och svar citation Det senaste uppdateringsförsöket antyder att vi skulle kunna använda predikatet Att konstruera en fråga som skulle ge oss ett glidande medelvärde. Är 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 ändra och beräkna Glidande medelvärdet är dyrt, du kan överväga att använda kolumninriktningen. SQL-frågfrågan. Med alla medel enhetliga Du slänger bara till lämplig vikthink beroende på avståndet från den aktuella tidpunkten. T ex ta 1 för datapoäng inom 24 timmar från aktuellt datapunkt 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 långt ifrån varandra Ett användningsfall jag c En tanke på skulle vara ett försök att släta histogramet där datapoäng inte är täta nog msciwoj 27 maj kl 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, till exempel den första Trippel 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 metod ä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 inslaget med fall då rownum då för att tvinga NULL s i första rader, där 3 dagars rörande medelvärde är meningslöst. Svarat 23 feb 16 kl 13 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. Genererar den begärda output. answered jan 9 16 på 0 33. Ditt svar.2017 Stack Exchange, Inc. Jag har läst Den diskussion du nämner Oned Det är tillämpligt på PostgreSQL eftersom det är tillåtet att skapa användardefinierad aggregatfunktion med SQL i PostgreSQL, men inte tillåtet i SQL Server. Användning av rekursiv CTE är ett genomförbart sätt i SQL Server, men jag märker att CTE-vägen kan leda till mer tabellskanning Än fönsterfunktioner Så jag gör det här inlägget för att fråga om det är möjligt att beräkna exponentiell glidande medelvärde med hjälp av SQL Server 2012-fönsterfunktionen precis som att beräkna enkelt glidande medelvärde xiagao1982 14 april vid 2 53. Först beräknar du EMA SMA x istället för EMA x För det andra är din utjämningskonstant faktiskt betavärdet i min formel, inte alfabetet. Med dessa två ändringar ser SQLFiddle ut så här. Det finns emellertid fortfarande en liten skillnad mellan det faktiska resultatet och det förväntade resultatet jag skulle gå tillbaka och se Om deras EMA-definition matchar den jag känner Sebastian Meine 7 maj 13 på 13 46. Jag tittade bara på formuläret i kalkylbladet du bifogade och det är långt ifrån standard EMA-definitionen Min formel beräknar S det exponentiella glidande medlet för de senaste tio raderna Kalkylbladet beräknar först standardvärdet under de senaste tio raderna och sedan det obegränsade exponentiellt vägda glidande medeltalet över alla medeltal. Detta följer formuläret här Sebastian Meine 7 maj 13 på 13 52. Medelvärdet i T-SQL. A vanlig beräkning i trendanalys är det rörliga eller rullande medlet. Ett glidande medelvärde är medeltalet av t ex de senaste 10 raderna. Det rörliga genomsnittet visar en mer jämn kurva än de faktiska värdena, mer med en längre period För det glidande medelvärdet, vilket gör det till ett bra verktyg för trendanalys. Detta blogginlägg visar hur man beräknar glidande medelvärde i T-SQL. Olika metoder kommer att användas beroende på vilken version av SQL Server. Diagrammet nedan visar utjämningseffekten röd linje med Ett 200 dagars glidande medel Aktiekurserna är den blå linjen Den långsiktiga trenden är tydligt visible. T-SQL Moving Avergage 200 dagar. Demonstrationen nedan kräver TAdb-databasen som kan vara Skapad med manuset som finns här. I det kommande exemplet kommer vi att beräkna ett glidande medelvärde under de senaste 20 dagarna Beroende på vilken version av SQL Server kommer det att finnas en annan metod att göra beräkningen och som vi senare kommer se den senare Versioner av SQL Server har funktioner som möjliggör mycket mer effektiv beräkning. SQL Server 2012 och senare Flytta Average. Denna version använder sig av en samlad fönsterfunktion Vad är nytt i SQL 2012 är möjligheten att begränsa storleken på fönstret genom att ange hur många rader Föregående fönstret bör innehålla. Rader som är föregående är 19 eftersom vi också kommer att inkludera den nuvarande raden i beräkningen. Som ni kan se är beräkningen av glidande medelvärde i SQL Server 2012 ganska enkel. Figuren nedan visar fönsterprincipen Nuvarande rad Markeras med gult Fönstret är markerat med en blå bakgrund Det rörliga genomsnittet är helt enkelt genomsnittet av QuoteClose i det blåa linjer. T-SQL Flyttande medelfönstret. Resultatet av calculatio Ns i äldre versioner av SQL Server är desamma, så de kommer inte att visas igen. SQL Server 2005 2008R2 Flytta Average. Denna version använder sig av ett gemensamt tabelluttryck CTE är självhänvisat för att få de senaste 20 raderna för varje rad. Flytta genomsnittet före SQL Server 2005. Pre 2005-versionen använder en vänster yttre anslutning till samma tabell för att få de senaste 20 raderna. Den yttre tabellen kan sägas innehålla det fönster som vi vill beräkna ett genomsnitt på. Performance Comparision. If Vi kör de tre olika metoderna samtidigt och kontrollerar den resulterande exekveringsplanen. Det finns en dramatisk skillnad i prestanda mellan metodsparisionen av tre olika metoder för att beräkna glidande medelvärde. Som du kan se gör fönsterförbättringsfunktionerna i SQL 2012 en stor skillnad i Performance. As nämnt i början av detta inlägg används glidande medelvärden som ett verktyg för att illustrera trender. Ett gemensamt förhållningssätt är att kombinera rörliga medelvärden av olika längder för att upptäcka förändringar i t Han kort, medellång och lång sikt Trender av särskilt intresse är korsningen av trendlinjer När till exempel den korta trenden rör sig över den långa eller medellånga trenden kan detta tolkas som en köpsignal i teknisk analys och när den korta trenden rör sig Under en längre trendlinje kan detta tolkas som en försäljningssignal. Tabellen nedan visar Quotes, Ma20, Ma50 och Ma200.T-SQL Ma20, Ma50, Ma200 köp och sälj signaler. 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.
No comments:
Post a Comment