Jag arbetar med SQL Server 2008 R2 och försöker beräkna ett glidande medelvärde. För varje post enligt min uppfattning vill jag samla värdena för de 250 föregående posterna och beräkna sedan genomsnittet för det här valet. Min synkolonner är enligt följande. TransactionID är unikt För varje TransaktionsID vill jag beräkna medelvärdet för kolumnvärdet över tidigare 250 poster. Så för TransactionID 300 samlar du alla värden från tidigare 250 rader, sorteras nedåt med TransactionID och sedan i kolumnen MovAvg skriver du resultatet av Genomsnittet av dessa värden jag letar för att samla in data inom en rad records. asked 28 oktober 14 på 20 58. Detta är en Evergreen Joe Celko fråga Jag ignorerar vilken DBMS-plattform som används Men i alla fall kunde Joe svara mer än 10 År sedan med standard SQL. Joe Celko SQL-pussel och svar citation Det senaste uppdateringsförsöket antyder att vi kan 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 ap Proach 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 medlet är dyrt, kan du överväga att använda kolumninriktningen. SQL-frågespelfrågan. Av alla Betyder enhetlig Du slänger bara till lämplig vikthink beroende på avståndet från den aktuella tidpunkten Till exempel ta 1 vikt för datapoäng inom 24 timmar från nuvarande datapointvikt 0 5 för datapoäng inom 48 timmar Det fallet betyder hur mycket sammanhängande datapoäng som 6 12 och 11 48:00 är avlägsen från varandra Ett användningsfall som jag kan tänka på skulle vara ett försök att släta histogramet varhelst 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 klassisk enkel rörlig rullande Genomsnitt för 3 dagar Eftersom exempelvis 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 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 förpackad 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. 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 Det blev frågat. Genererar den begärda output. answered jan 9 16 på 0 33. Ditt svar.2017 Stack Exchange, Inc. Enligt din beskrivning har du en matris i din rapport Nu vill du beräkna medelvärdet för senaste 6 månaden Right. In Reporting Service kan vi sätta anpassad kod till rapport för att hantera komplicerad logik Lägg till en kolumnrad inuti gruppen och ring de funktioner som definieras i anpassad kod För ditt krav modifierade vi Robert s-kod för att nå ditt mål Vi testade ditt fall i Vår lokala miljö med provdata Här är stegen och skärmdumpar för din referens. Ta den anpassade koden i rapporten Privat kölängd Som heltal 6 Privat köSum Som dubbel 0 Privat QueueFull Som Boolean False Privat IDChange Som String Dim Kön Som Ny Integer Offentlig Funktion KumulativQueue ByVal CurrentValue Som helhet, id som sträng som objekt dim bortValue som dubbel 0 Om idChange id sedan ClearQueue idChange id queueSum 0 queueFull False CumulativeQueue currentValue, id Else Om queueLength Sedan removedValue End Om queueSum currentValue queueSum - removedValue Om queueLength Then Return Nothing ElseIf queueLength And queueFull False Därefter QueueFull True Return QueueSum QueueLength Else Return QueueSum QueueLength End Om End If End Funktion public function ClearQueue Dim i som Integer Dim n som heltal för in till 0 Steg 1 nästa Avsluta funktion. Lägg till ytterligare en rad inuti gruppen, ring funktionen Definieras i anpassad kod. Spara och förhandsgranska Det ser ut som nedan. Om du har någon fråga, s Hyran är fritt att fråga. Vänliga hälsningar, Simon Hou Pactera. Vedag, 14 Maj, 2014 12 36. Alla svar. Du kan använda RunningValue-funktionen för detta. Något som nedan. Markera det här som svar om det hjälper till att lösa Utfärda Visakh. According till din beskrivning har du en matris i din rapport Nu vill du beräkna medelvärdet av senaste 6 månaders höger. I rapporteringstjänsten kan vi sätta anpassad kod till rapport för att hantera komplicerad logik Lägg till en kolumnrad Inuti gruppen och ringa de funktioner som definieras i anpassad kod För ditt krav modifierade vi Robert s-kod för att uppnå ditt mål Vi testade ditt fall i vår lokala miljö med provdata. Här är steg och skärmdumpar för din referens. Gör den anpassade koden i rapporten Privat QueueLength As Integer 6 Privat QueueSum As Double 0 Privat QueueFull Som Boolean False Private IDChange As String Dim Que As New Integer Offentlig Funktion CumulativeQueue ByVal CurrentValue Som heltal, id som sträng som Objekt Dim removedValue As Double 0 Om idChange id then ClearQueue idChange id queueSum 0 queueFull False CumulativeQueue currentValue, id Else Om queueLength Sedan removedValue End Om queueSum currentValue queueSum - removedValue Om queueLength Then Retur Nothing ElseIf queueLength And queueFull False Then queueFull True Retur QueueSum queueLength Else Retur QueueSum queueLength Avsluta Om Slut Om Slut Funktion Offentlig funktion ClearQueue Dim I som Heltal Dim n som Heltal för in Till 0 Steg 1 Nästa Avsluta funktion. Lägg till ytterligare en rad inuti gruppen, ring funktionen definierad i anpassad kod. Spara och förhandsgranska Det ser ut Som nedan. Om du har några frågor är du välkommen att fråga. Vänliga hälsningar, Simon Hou Pactera. Onsdagen den 14 maj 2014 12 36.Microsoft genomför en online-undersökning för att förstå din åsikt på Technets webbplats Om du väljer Att delta, kommer onlineundersökningen att presenteras för dig när du lämnar Technets webbplats. Vill du delta. 2017 Microsoft Alla rättigheter förbehållna.
No comments:
Post a Comment