Sunday 12 November 2017

Liukuva Keskiarvo In Sqlserveriä 2008


Yritän saada keskimääräisen sarakkeen SELECT-käskystä, joka perustuu samaan SELECT-lausekkeen edellisiin riveihin olevasta sarakkeesta. Tarvitsen keskiarvon perustuu tulosten n edellisiin riveihin. Keskimääräisen sarakkeen kolme ensimmäistä riviä Ovat nolla, koska ei ole aiempia rivejä Keskimääräinen sarakkeessa oleva rivi 4 näyttää edellisen 3 rivin Numero-sarakkeen keskiarvon. Tarvitsen apua, joka yrittää rakentaa SQL Select - lausuman, joka tekee tämän. Tehdä paljon parempaa kuin rivin viite alikysely. Luoda 10k riviä testitietoja. I vetäisi erityinen tapaus kolmen ensimmäisen rivin pois tärkein kysely, voit UNION kaikki ne takaisin, jos todella haluat sen rivin asettaa Self join query. On koneeni kestää noin 10 sekuntia, subquery lähestymistapa, että Aaron Alton osoitti kestää noin 45 sekuntia, kun olen muuttanut sitä vastaamaan minun testilähde taulukon. Jos teet SET TILASTOTE PROFIL ON, voit nähdä itse liittyä on 10k suoritettu ta: lla Ble spool Alikyselyllä on 10k suoritetaan suodattimella, aggregaatilla ja muilla vaiheilla. Olen työskennellyt SQL Server 2008 R2: n kanssa, yrittäen laskea liukuvaa keskiarvoa. Jokaiselle tietueelle minun mielestäni haluan kerätä 250 edellisen Tallentaa ja laskea tämän valinnan keskiarvo. Näkymän sarakkeet ovat seuraavat. TransactionID on ainutlaatuinen Kullekin TransactionID: lle haluan laskea sarakkeen arvon keskiarvon edellisiltä 250: n rekisteriltä. Joten TransactionID 300: lle kerätään kaikki arvot aiemmista 250 rivien näkymää lajitellaan laskemalla TransactionID ja sitten sarakkeessa MovAvg kirjoittaa tulokset näiden arvojen keskimäärin Tarkastelen keräämään tietoja useista rekistereistä. asked 28.10. klo 20 58.AVG Transact-SQL. ALL Sovelletaan yhdistelmää Toiminto kaikkiin arvoihin KAIKKI on oletusarvo. DISTINCT Määrittää, että AVG voidaan suorittaa vain kunkin yksittäisen arvon yhteydessä riippumatta siitä, kuinka monta kertaa arvo esiintyy. expression on ekspressiota tarkka numeerinen tai likimääräinen numeerisen datatyyppiluokan bittitietojen tyyppi Aggregaattifunktiot ja alikyselyt eivät ole sallittuja. OVER osioi lausekkeen orderbyclause partitionbyclause jakaa FROM-lausekkeen tuottama tulosjoukko osioihin, joihin funktiota sovelletaan Jos ei määritetä, funktio käsittelee kaikki rivit kyselyn tulos asetettu yhtenä ryhmänä orderbyclause määrittää loogisen järjestyksen, jossa operaatio suoritetaan orderbyclause vaaditaan Lisätietoja: OVER Clause Transact-SQL. Palautustyyppi määräytyy lausekkeen arvioidun tuloksen tyypin mukaan. p, s. Jos lausekkeen datan tyyppi on aliaksen tietotyyppi, palautustyyppi on myös aliaksen tietotyyppi. Jos aliaksen tietotyypin perustietotyyppi kuitenkin edistetään, esimerkiksi tinyint-in - on edistynyt tietotyyppi eikä alias-tietotyyppi. AVG laskee arvoryhmän keskiarvon jakamalla näiden arvojen summan ei-arvoisten arvojen avulla Jos summa ylittää paluuarvon tietotyypin maksimiarvon, virhe palautetaan. AVG on deterministinen funktio, kun sitä käytetään ilman OVER - ja ORDER BY-lausekkeita. Se on epädeterministinen määritettynä OVER - ja ORDER BY-lausekkeilla. ks. Deterministiset ja epädeterministiset funktiot. SUM - ja AVG-funktioiden käyttäminen laskutoimituksiin. Seuraavassa esimerkissä lasketaan keskimääräiset lomaajat ja seulontatyön summat, jotka Adventure Works Cyclesin varapuheenjohtajat ovat käyttäneet. Jokainen näistä yhdistelmätoiminnoista tuottaa yhden yhteenvedon arvo kaikille haetuille riville Esimerkki käyttää AdventureWorks2012-tietokantaa.

No comments:

Post a Comment