Wednesday 11 October 2017

Przenoszący Średnio W Sql Serwer 2008 R2


Pracuję z SQL Server 2008 R2, próbując obliczyć ruchome średnie Dla każdego rekordu w moim widoku, chciałbym zebrać wartości z 250 poprzednich rekordów, a następnie obliczyć średnią dla tego select. My kolumny widoku są następujące. TransactionID jest unikalny Dla każdego TransactionID chciałbym obliczyć średnią dla wartości kolumny w poprzednich 250 rekordach Więc dla TransactionID 300 zebrać wszystkie wartości z poprzednich 250 wierszy jest sortowane sortowanie malejące według TransactionID, a następnie w kolumnie MovAvg zapisać wynik średnia z tych wartości szukam zbierać dane w zakresie records. asked 28 października 14 w 20 58. Staram się mieć przebiegającą średnią kolumnę w instrukcji SELECT na podstawie kolumny z n poprzednich wierszy w tym samym SELECT instrukcja Średnia potrzeba jest oparta na poprzednich wierszach w wynikach. Pierwsze 3 rzędy kolumny Średni są puste, ponieważ nie ma poprzednich wierszy. Wiersz 4 w kolumnie Średnia pokazuje średnią liczby Co lumn z poprzednich 3 rowss. I potrzebują pomocy próbuje skonstruować SQL Select oświadczenie, które będzie to zrobić. Jednak proste join siebie wydają się wykonać znacznie lepsze niż wiersz odniesienia subquery. Generate 10k wiersze danych test. I byłoby ciągnąć specjalny przypadek z pierwszych 3 wierszy z głównego zapytania, można UNION wszystkich tych z powrotem, jeśli naprawdę chcesz go w wierszu zestaw Self join query. On mojej maszyny trwa to około 10 sekund, subquery podejście, które Aaron Alton wykazał wziął około 45 sekund po zmianie go w celu odzwierciedlenia mojego stołu źródłowego testu. Jeżeli ustawisz STATYSTYKI STATYSTYKI WŁĄCZONE, możesz zobaczyć, że autoprzełączenie ma wykonywane 10k na buforze tabeli Podkwerster ma 10k na filtrze, agregat i inne kroki. AVG Transact-SQL. ALL Zastosowanie agregującej funkcji do wszystkich wartości ALL jest domyślne. DISTINCT Określa, że ​​AVG jest wykonywany tylko w każdej unikalnej instancji wartości, niezależnie od tego, ile razy wystąpi wartość. expression Jest wyrażeniem dokładnym numeryczne lub przybliżone typ danych kategorii danych, z wyjątkiem typu danych typu bitowego Ograniczone funkcje i podzapytania są niedozwolone. Za partycję dzielą się na zlecenie przezwyciężenie podziału na partycje dzieląc zestaw wyników generowany przez klauzulę FROM na partycje, do których jest zastosowana funkcja Jeśli nie podano, funkcja traktuje wszystkie wiersze wynik zapytania ustawiony jako pojedyncza grupa orderbyclause określa kolejność logiczną, w jakiej operacja jest wykonywana orderbyclause jest wymagana Aby uzyskać więcej informacji, zobacz OVER Klauzula Transact-SQL. Typ zwracany jest określany przez typ poddawanego ocenie wyniku wyrażenia. p, s. Jeśli typ danych wyrażenia jest aliasem typu danych, typem zwrotu jest również typ danych aliasu Jeśli jednak typ danych podstawowych typu danych aliasu jest promowany, na przykład z tinyint do int wartość zwracana jest promowanym typem danych, a nie typem aliasu. AVG oblicza średnią zbiór wartości dzieląc sumę tych wartości przez liczbę niezerowych wartości If suma przekracza maksymalną wartość dla typu danych wartości zwracanej, błąd zostanie zwrócony. AVG jest funkcją deterministyczną, gdy jest używana bez klauzul OVER i ORDER BY Jest niewłaściwie ustalona z klauzulą ​​OVER i ORDER BY Aby uzyskać więcej informacji, zobacz Deterministic and Nondeterministic Functions. A Korzystanie z funkcji SUM i AVG do obliczeń. Następujący przykład oblicza średnie godziny wakacji i sumę godzin zwolnień lekarskich, które wiceprezesi Adventure Works Cycles używali Każda z tych funkcji agregujących tworzy pojedyncze podsumowanie wartość dla wszystkich pobranych wierszy W przykładzie używa się bazy danych AdventureWorks2017.

No comments:

Post a Comment