Tuesday 7 November 2017

Jak obliczyć średnia ruchoma w sql


Średnia ruchoma Ten przykład pokazuje, jak obliczyć średnią ruchomą szeregu czasowego w Excelu. Średnia ruchoma służy do łagodzenia nieprawidłowości (szczytów i dolin) w celu łatwego rozpoznawania trendów. 1. Najpierw przyjrzyjmy się naszej serii czasowej. 2. Na karcie Dane kliknij Analiza danych. Uwaga: nie można znaleźć przycisku Analiza danych Kliknij tutaj, aby załadować dodatek Analysis ToolPak. 3. Wybierz średnią ruchomą i kliknij OK. 4. Kliknij pole Input Range i wybierz zakres B2: M2. 5. Kliknij w polu Interwał i wpisz 6. 6. Kliknij pole Zakres wyjściowy i wybierz komórkę B3. 8. Narysuj wykres tych wartości. Objaśnienie: ponieważ ustawiliśmy przedział na 6, średnia ruchoma jest średnią z poprzednich 5 punktów danych i bieżącego punktu danych. W rezultacie szczyty i doliny są wygładzone. Wykres pokazuje rosnący trend. Program Excel nie może obliczyć średniej ruchomej dla pierwszych 5 punktów danych, ponieważ nie ma wystarczającej liczby poprzednich punktów danych. 9. Powtórz kroki od 2 do 8 dla przedziału 2 i odstępu 4. Wniosek: Im większy przedział, tym bardziej wygładzone są szczyty i doliny. Im mniejszy interwał, tym bardziej zbliżone są średnie ruchome do rzeczywistych punktów danych. Pracuję z SQL Server 2008 R2, próbując obliczyć średnią ruchomą. Dla każdego rekordu w moim widoku chciałbym zebrać wartości 250 poprzednich rekordów, a następnie obliczyć średnią dla tego wyboru. Moje kolumny widoku są następujące: TransactionID jest unikalny. Dla każdego TransactionID. Chciałbym obliczyć średnią dla wartości kolumny powyżej 250 rekordów. Tak więc dla TransactionID 300, zebrać wszystkie wartości z poprzednich 250 wierszy (widok jest posortowany malejąco według TransactionID), a następnie w kolumnie MovAvg zapisać wynik średniej z tych wartości. Szukam zebrać dane w zakresie rekordów. zapytał Oct 28 14 o 20: 58 To pytanie Evergreen Joe Celko. Ignoruję, która platforma DBMS jest używana. Ale w każdym razie Joe był w stanie odpowiedzieć ponad 10 lat temu standardowym SQL. Cytat z Joe Celko SQL Puzzles and Answers: Ostatnia próba aktualizacji sugeruje, że możemy użyć predykatu do skonstruowania zapytania, które dałoby nam średnią ruchomą: Czy dodatkowa kolumna lub metoda zapytania są lepsze? Zapytanie jest technicznie lepsze, ponieważ podejście UPDATE będzie zdenormalizuj bazę danych. Jeśli jednak zapisane dane historyczne nie ulegną zmianie, a obliczanie średniej ruchomej jest kosztowne, można rozważyć zastosowanie podejścia opartego na kolumnach. Zapytanie dotyczące łamigłówek SQL: w każdym razie jednolite. Wystarczy rzucić do odpowiedniego kubełka wagi w zależności od odległości od aktualnego punktu czasowego. Na przykład limit wagi 1 dla punktów danych w ciągu 24 godzin od aktualnego punktu danych00 dla punktów danych w ciągu 48 godzin. W takim przypadku liczy się to, ile kolejnych punktów danych (np. 6:12 i 23:48) jest od siebie odległych. Przypadek użycia, o jakim myślę, byłby próbą wygładzenia histogramu wszędzie tam, gdzie punkty danych nie są wystarczająco gęste ndash msciwoj 27 maja 15 w 22:22 Nie jestem pewien, czy twój oczekiwany wynik (wynik) pokazuje klasyczną prostą ruchomą (toczącą się) średnią przez 3 dni. Ponieważ, na przykład, pierwsza potrójna liczba z definicji daje: ale oczekujesz 4,360 i jej mylące. Mimo to sugeruję następujące rozwiązanie, które wykorzystuje funkcję okienkową AVG. Takie podejście jest znacznie bardziej efektywne (jasne i mniej wymagające zasobów) niż SELF-JOIN wprowadzone w innych odpowiedziach (i jestem zaskoczony, że nikt nie dał lepszego rozwiązania). Widzisz, że AVG jest opakowany w case, gdy rownum gt p. days następnie wymusza NULL w pierwszych wierszach, gdzie 3-dniowa średnia krocząca nie ma znaczenia. odpowiedziano 23 lutego 16 o 13:12 Możemy zastosować metodę brudnych lewych złączeń Joe Celkosa (cytowany powyżej przez Diego Scaravaggi), aby odpowiedzieć na pytanie, gdy zostało zadane. Generuje żądane dane wyjściowe: odpowiedź 16 stycznia 16 o 0:33 Twoja odpowiedź 2017 Stos Exchange, Inc

No comments:

Post a Comment