Ek is besig met SQL Server 2008 R2, probeer om 'n bewegende gemiddelde te bereken. Vir elke rekord in my mening, sou ek graag die waardes van die 250 vorige rekords in te samel, en bereken dan die gemiddelde vir hierdie seleksie. My mening kolomme is soos volg: TransactionID is uniek. Vir elke TransactionID. Ek wil graag die gemiddelde vir waarde kolom bereken, oor die vorige 250 rekords. So vir TransactionID 300, versamel al waardes van die vorige 250 rye (siening word gesorteer dalende deur TransactionID) en dan in kolom MovAvg skryf die resultaat van die gemiddeld van hierdie waardes. Ek is op soek na data in te samel binne 'n verskeidenheid van rekords. gevra 28 Oktober 14 aan 20: 58How 'n SQL Bereken bewegende gemiddelde sonder 'n wyser Update: As jy besig is met die nuutste weergawes van SQL Server, kan jy die windows funksies gebruik om dieselfde ding te bewerkstellig. Ek gepos word om die updated kode aan die einde van die post. Om hierdie video, ek nog graag die denkproses van anker om 'n datum. Video: 3 daagse bewegende gemiddelde in SQL 'n doeltreffende manier om 'n bewegende gemiddelde in SQL te bereken met behulp van 'n paar truuks op datum ankers stel. Daar is debatte oor die beste manier om 'n SQL bewegende gemiddelde in SQL Server doen. Sommige mense dink daar is tye wanneer 'n wyser is mees doeltreffende. Ander dink dat jy dit alles kan doen in 'n stel wat gebaseer is weg sonder die wyser. Die ander dag het ek gaan 'n bewegende gemiddelde te bereken en my eerste gedagte was om 'n wyser gebruik. Ek het 'n paar vinnige navorsing en het gevind dat hierdie forum vraag: Moving Gemiddelde in TSQL Daar is 'n pos wat 'n subquery met 'n anker datum te help vind die 1 en 2 dag geneutraliseer toon. Hier is die skrif wat jy kan gebruik om die 3 dag SQL Gemiddeld finale uitslag Moving toets. Hier is die finale navraag. Hier is die vraag wat jy sou gebruik met SQL Server 2012. Deel hierdie: SQL Server T-SQL-kode om 'n bewegende gemiddelde te bereken deur: Dallas Snider Lees Kommentaar Verwante Wenke: Meer funksies - Gebruiker-gedefinieerde UDF Probleem Hoe kan ek die data in 'n gladde kolom met 'n bewegende gemiddelde in T-SQL kan jy asseblief loop deur 'n voorbeeld in SQL Server met T-SQL-kode Hoe kan ons die geldigheid van die resultate Oplossing tydreeksdata kan inherent lawaaierige en 'n goeie manier wees om uit te stryk die data is bereken 'n bewegende gemiddelde. Daar is 'n aantal maniere om 'n bewegende gemiddelde in T-SQL bereken, maar in hierdie punt sal ons kyk na 'n manier om 'n bewegende gemiddelde wat die gemiddelde venster x aantal rye agter en x aantal rye stel voor die stroom te bereken data ry. Die voordeel hiervan is dat daar geen vertraging in die gemiddelde waarde teruggekeer en die bewegende gemiddelde waarde is op dieselfde ry met sy huidige waarde. Kom ons begin deur die skep van 'n tafel en laai 'n paar data met behulp van onder die T-SQL. Ons het 361 datapunte wat 'n lawaaierige sinusgolf te skep. Na die laai van die data, sal ons die volgende T-SQL-kode uit te voer om al die kolomme kies saam met die bewegende gemiddelde waarde. In die onderstaande kode, die bewegende gemiddelde venster grootte is 15 (7 rye die huidige ry voorafgaande, plus die huidige ry, plus die 7 volgende rye). Die bewegende gemiddelde van die kolom DataValue teruggestuur as die kolom MovingAverageWindowSize15. Die ORDER BY klousule is uiters belangrik om die data in die behoorlike gesorteerde volgorde hou. Ons kan kopieer en plak die resultate in Excel om die geldigheid van die berekening korrek is. In die onderstaande beeld, die venster begin in sel C3 en eindig by C17. Die bewegende gemiddelde bereken deur die T-SQL in hierdie punt lyk in sel D10. Die gemiddelde bereken deur Excel is aan die onderkant en dit is gelykstaande aan die waarde in D10. In die onderstaande figuur is, kan ons die oorspronklike data waardes geplot in blou met die bewegende gemiddelde in rooi gestip sien. Volgende stappe Eers die grootte van die bewegende gemiddelde venster om te sien hoe die plot verander. Maak ook seker dat jy check die ander wenke oor T-SQL uit mssqltips: Laaste wysiging: 08/03 / 2016Moving gemiddelde in T-SQL n gemeenskaplike berekening tendens analise is die bewegende (of rollende) gemiddelde. 'N bewegende gemiddelde is die gemiddeld van die byvoorbeeld laaste 10 rye. Die bewegende gemiddelde wys 'n meer gladde kurwe as die werklike waardes, meer so met 'n langer tydperk vir die bewegende gemiddelde, maak dit 'n goeie hulpmiddel vir tendens analise. Hierdie blog post sal wys hoe om te bereken bewegende gemiddelde in T-SQL. Verskillende metodes sal gebruik word, afhangende van die weergawe van SQL Server. Die onderstaande grafiek toon die smoothing effek (rooi lyn) met 'n 200 dae bewegende gemiddelde. Die voorraadkwotasies is die blou lyn. Die langtermyn tendens is duidelik sigbaar. T-SQL Moving Avergage 200 dae onderstaande demonstrasie vereis die TAdb databasis wat geskep kan word met die script hier geleë. In die komende voorbeeld sal ons 'n bewegende gemiddelde te bereken vir die afgelope 20 dae. Afhangende van die weergawe van SQL Server, sal daar 'n ander metode om die berekening te doen. En, soos ons later sal sien, die nuwer weergawes van SQL Server het funksies in staat stel 'n baie meer doeltreffende berekening. SQL Server 2012 en later Moving Gemiddelde Hierdie weergawe maak gebruik van 'n totaal venster funksie. Wat is nuut in SQL 2012 is die moontlikheid om die grootte van die venster beperk deur hoeveel rye voor die venster moet bevat: Rye voorafgaande is 19, want ons het die huidige ry sowel in die berekening in te sluit. Soos jy kan sien, die berekening van bewegende gemiddelde in SQL Server 2012 is redelik eenvoudig. Die onderstaande figuur toon die windows beginsel. Huidige ry gemerk met 'n geel. Die venster is gemerk met 'n blou agtergrond. Die bewegende gemiddelde is eenvoudig die gemiddelde van QuoteClose in die blou lyne: T-SQL Moving gemiddelde venster. Die resultate van die berekeninge in ouer weergawes van SQL Server is dieselfde, so hulle sal nie weer gewys word. SQL Server 2005 8211 2008R2 Moving Gemiddelde Hierdie weergawe maak gebruik van 'n gemeenskaplike tafel uitdrukking. Die CTE is self gekla tot die laaste 20 rye vir elke ry te kry: Moving Gemiddelde voor SQL Server 2005 Die pre 2005 weergawe sal 'n links buitenste gebruik te sluit om dieselfde tafel met die laaste 20 rye te kry. Die buitenste tafel kan gesê word dat die venster wat ons wil 'n gemiddelde op te bereken bevat: Performance Vergelijking As ons die drie verskillende metodes gelyktydig hardloop en gaan die gevolglike uitvoering plan, daar is 'n dramatiese verskil in prestasie tussen die metodes: Vergelijking van drie verskillende metodes te bereken bewegende gemiddelde Soos jy kan sien, die windows funksie verbeterings in SQL 2012 maak 'n groot verskil in prestasie. Gebruik Soos in die begin van hierdie post, is bewegende gemiddeldes gebruik as 'n instrument om tendense te illustreer. 'N Algemene benadering is om bewegende gemiddeldes van verskillende lengtes te kombineer, ten einde veranderinge in die kort-, medium - en langtermyn tendense onderskeidelik te sien. Van besondere belang is die kruising van die tendens lyne. Byvoorbeeld, wanneer die kort tendens oor die lang of medium tendens beweeg, dit kan geïnterpreteer word as 'n koopsein in tegniese ontleding. En toe die kort tendens beweeg onder 'n langer tendens lyn, kan dit vertolk word as 'n sell sein. Die onderstaande grafiek toon Kwotasies, Ma20, Ma50 en Ma200. T-SQL Ma20, Ma50, Ma200 koop en verkoop seine. Hierdie blog post is deel van 'n reeks oor tegniese ontleding, TA, in SQL Server. Sien die ander poste hier. Geplaas deur Tomas LindCalculating n bewegende gemiddelde Een van my tafels bevat meteorologiese metings per minuut (bv temperatuur en humiditeit), en I39m probeer om 'n groep te gebruik deur klousule 'n bewegende daaglikse gemiddelde per maand bereken vir hierdie metings. Ek wil hierdie gemiddelde in 'n smalldatetime datatipe te druk. Berekening van 'n daaglikse gemiddelde temperatuur is maklik nie, maar ek wil Unie hierdie gemiddeldes vir 'n maand. Hoe kan ek die data te skep ek nodig het om te sien hoe jy die bewegende gemiddelde kan terugkeer, skep eers 'n Metings tafel en vul dit met steekproefdata vir die toets. Lys 1 vult die afmetings tafel met een year39s waarde van ses ewekansige daaglikse temperatuur metings. Die truuk in die berekening van 'n daaglikse temperatuur gemiddelde is om 'n uitdrukking te gebruik in die groep DEUR klousule. Die uitdrukking VERWERK (char (10), DT, 112) in Listing 2 39s script uittreksels net die datum deel van die DT kolom, wat die measurement39s datum en tyd bevat. Deur die gebruik van hierdie uitdrukking in die groep DEUR klousule, jy 'n aparte ry terug vir elke dag. Dan moet jy die gemiddelde temperatuur versoek en filtreer die gewenste maand, as Listing 2 shows. Hierdie stelling gee 'n month39s waarde van daaglikse temperatuur gemiddeldes, wat die bewegende gemiddelde uitmaak. Tabel 1 toon die opbrengs van Listing 2. Deel hierdie artikel bespreek hierdie artikel 1 Simon (nie geverifieer) Dit is nie 'n bewegende gemiddelde - dit is gemiddeld deur kalendermaand - nie gemiddeld die afgelope 30 dae vir elke dag. Hoe sou 'n bewegende gemiddelde gedoen asseblief aanmeld of registreer om kommentaar te lewer. Verwante Artikels Soek Oor Ons Kopiereg kopieer 2016 Penton
No comments:
Post a Comment