Glidande Medelvärde Sql 2008


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. Jag försöker ha en löpande medelkolumn i SELECT-satsen baserat på en kolumn från n föregående rader i samma SELECT uttalande Det genomsnittliga jag behöver är baserat på de n föregående raderna i resultaten. De första 3 raderna i medelkolumnen är noll eftersom det inte finns några tidigare rader. Raden 4 i kolumnen Genomsnitt visar medelvärdet av Number co Lumn från de föregående 3 raderna. Jag behöver lite hjälp med att försöka konstruera ett SQL Select-uttalande som kommer att göra detta. En enkel självförening verkar fungera mycket bättre än en rad referens subquery. Generate 10k rader testdata. Jag skulle dra Speciellt fall av de första 3 raderna ur huvudfrågan kan du UNION ALL de tillbaka i om du verkligen vill ha den i raden ställt självförfrågan. På min maskin tar det ungefär 10 sekunder, det subquery-tillvägagångssätt som Aaron Alton visade tar Ungefär 45 sekunder efter att jag ändrade det för att reflektera min testkälla tabell. Om du gör en SET STATISTIK PROFIL PÅ, kan du se att självförena har 10k exekverar på bordspolen. Underfrågan har 10k körs på filtret, aggregat och andra steg. AVG Transact-SQL. ALL Använder aggregatfunktionen till alla värden ALL är standard. DISTINCT Anger att AVG endast ska utföras på varje unik instans av ett värde, oavsett hur många gånger värdet inträffar. expression Är ett uttryck för exakt Numerisk eller ungefärlig Numerisk datatypskategori med undantag för bitdatatypen Aggregatfunktioner och subqueries är inte tillåtna. OVER partitionbyclause orderbyclause partitionbyclause delar upp resultatuppsättningen som produceras av FROM-klausulen i partitioner som funktionen appliceras om inte anges, behandlar funktionen alla rader av Sökresultatet som anges som en enda grupporderbyte bestämmer den logiska ordningen i vilken operationen utförs orderbyclause krävs För mer information se överklausul Transact-SQL. Returtypen bestäms av typen av det utvärderade resultatet av expression. decimal kategori P, s. Om expressionstypen är en aliasdatatyp, är returtypen också av aliasdatatypen. Om databasatypen för aliasdatatypen främjas, till exempel från tinyint till int returneringsvärdet är av den främjda datatypen och inte aliasdatatypen. AVG beräknar medelvärdet av en uppsättning värden genom att dividera summan av dessa värden med räkningen av nonnull-värdena If Summan överskrider det maximala värdet för datatypen för returvärdet ett fel kommer att returneras. AVG är en deterministisk funktion när den används utan över - och orderbestämmelserna Det är nondeterministic när det anges med över - och orderbestämmelserna För mer information, Se Deterministic och Nondeterministic Functions. A Använd SUM och AVG funktionerna för beräkningar. Följande exempel beräknar de genomsnittliga semestertimmarna och summan av sjukledighetstider som vicepresentanterna för Adventure Works Cycles har använt. Varje av dessa aggregatfunktioner producerar en enda sammanfattning värde för alla hämtade rader Exemplet använder databasen AdventureWorks2012.

Comments

Popular Posts