Wednesday, 11 October 2017

Glidande Medelvärde Mysql


När jag hade ett liknande problem slutade jag använda tempabord av olika orsaker, men det gjorde det mycket lättare. Vad jag gjorde ser väldigt ut som vad du gör, så långt som schemat går. Gör schemat något som ID-identitet, startdatum, slutdatum, värde När du väljer gör en subselect avg av tidigare 20 baserat på identitets-ID. Gör bara det här om du befinner dig redan använder temp tabeller av andra skäl, trots att jag träffar samma rader om och om igen för Olika mätvärden, så det var till hjälp att ha den lilla datamängden. Enligt min erfarenhet brukar Mysql från 5 5 x inte använda index på beroende val, oavsett om det är en underfråga eller bli medlem. Det kan ha en väsentlig inverkan på prestanda där den beroende väljaren kriterier förändras på varje rad. Avgående genomsnitt är ett exempel på en fråga som faller i denna kategori. Utförandetiden kan öka med rutans ruta För att undvika detta, välj en databasmotor som kan utföra indexerade sökningar på beroende val. Jag hittar postgres Verk effekt Ively för detta problem. svarade jul 2 14 på 8 01. Ditt svar.2017 Stack Exchange, Inc. Tidigare diskuterade vi hur man skriver rullande medelvärden i Postgres. Med populära efterfrågan visar vi dig hur du gör detsamma i MySQL och SQL Server. Vi kommer att täcka hur man kommenterar bullriga kartor som denna. Med en 7-dagars föregående medellinje som denna. Den stora ideen. Vår första graf ovan är ganska bullriga och svårt att få användbar information från. Vi kan släta ut det genom att plotta en 7- dagmedelvärde ovanpå underliggande data Detta kan göras med fönsterfunktioner, självförbindelser eller korrelerade underfrågor - vi kommer att täcka de första två. Vi börjar med ett föregående medel, vilket innebär att medelvärdet på den 7: e dagen Månaden är genomsnittet för de första sju dagarna. Det här ändrar faktiskt spikarna i diagrammet till höger, eftersom en stor spik är medelvärde under de följande sju dagarna. Först Skapa ett mellantalstabell. Vi vill beräkna ett medelvärde över Totala registreringar för varje dag Antag att vi har en typisk användare tabl E med en rad per ny användare och en tidsstämpel skapad, kan vi skapa vårt aggregat vår registreringstabell som så. I Postgres och SQL Server kan du använda detta som en CTE I MySQL kan du spara den som en tillfällig tabell. Postgres Rolling Average. Lyckligtvis har Postgres fönsterfunktioner som är det enklaste sättet att beräkna ett löpande medelvärde. Den här frågan förutsätter att datumen inte har luckor. Frågan är genomsnittlig under de senaste sju raderna, inte de senaste sju datumen. Om dina data har luckor fyller du i dem Med generateseries eller anslutning till ett bord med täta datumrader. MySQL Rolling Average. MySQL saknar fönsterfunktioner, men vi kan göra en liknande beräkning med hjälp av självförbindelser. För varje rad i vårt räknat tabell går vi med i varje rad som var inom de senaste sju Dagar och ta medeltalet. Denna fråga hanterar automatiskt datumluckor, eftersom vi tittar på rader inom ett datumintervall snarare än föregående N rader. SQL Server Rolling Average. SQL Server har fönsterfunktioner, så beräkning av rullande medel kan göras i N antingen Postgres-stilen eller MySQL-stilen För enkelhet använder vi MySQL-versionen med en självförening. Detta är konceptuellt detsamma som i MySQL. De enda översättningarna är datumaddfunktionen och uttryckligen namngiven grupp av kolumner. Övriga medelvärden. Vi fokuserade på 7-dagars efterföljande medelvärde i det här inlägget Om vi ​​ville titta på det 7-dagars ledande genomsnittet, så är det så enkelt att sortera datumen i andra riktningen. Om vi ​​ville titta på ett centrerat medelvärde, så använder vi. Postgres-rader mellan 3 föregående och 3 följande. MySql mellan - 3 och 3 i MySQL. SQL Server mellan dateadd dag, -3 och dateadd day 3. Det här är en Evergreen Joe Celko fråga Jag ignorerar vilken DBMS-plattform som används Men i alla fall Joe Kunde 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 rörligt genomsnitt. Är den extra kolumnen eller frågan Närma sig 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 kommer att förändras och beräkningen är det rörliga genomsnittet är dyrt, kan du överväga att använda kolumninriktningen. SQL-frågespel. 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 nuvarande datapunktvikt 0 5 för datapoäng inom 48 timmar Det fallet betyder hur mycket sammanhängande datapoäng som 6 12 och 11 48 är avstånd från varje annat 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. 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 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 vinst dow-funktion AVG Denna tillvägagångssätt är mycket effektivare och mindre resurskrävande än SELF-JOIN introducerad i andra svar och jag är förvånad över att ingen har givit en bättre lösning. Du ser att AVG är förpackad med fall då rownum sedan tvingas NULL s i första rader 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 nämnts ovan av Diego Scaravaggi för att svara på frågan som den ställdes om. begärd output. answered jan 9 16 på 0 33. Ditt svar.2017 Stack Exchange, Inc.

No comments:

Post a Comment