Szukaj…


Wyśrodkowana średnia krocząca

Oblicz średnią kroczącą ceny z 6 miesięcy (126 dni roboczych):

SELECT TradeDate, AVG(Px) OVER (ORDER BY TradeDate ROWS BETWEEN 63 PRECEDING AND 63 FOLLOWING) AS PxMovingAverage
FROM HistoricalPrices

Należy pamiętać, że ponieważ zajmie to do 63 wierszy przed każdym wierszem i po nim, na początku i na końcu zakresu TradeDate nie zostanie wyśrodkowane: gdy osiągnie największą wartość TradeDate, będzie w stanie znaleźć 63 poprzedzające wartości uwzględniać w średniej.

Znajdź pojedynczy najnowszy element na liście wydarzeń ze znacznikiem czasu

W tabelach rejestrujących zdarzenia często występuje pole datetime rejestrujące czas wystąpienia zdarzenia. Znalezienie jednego ostatniego zdarzenia może być trudne, ponieważ zawsze jest możliwe, że dwa zdarzenia zostały zarejestrowane z dokładnie identycznymi znacznikami czasu. Możesz użyć row_number () over (sortuj według ...), aby upewnić się, że wszystkie rekordy mają unikalną pozycję, i wybierz najwyższy (gdzie my_ranking = 1)

select *
from (
    select 
        *,
        row_number() over (order by crdate desc) as my_ranking
    from sys.sysobjects
) g
where my_ranking=1

Tej samej techniki można użyć do zwrócenia pojedynczego wiersza z dowolnego zestawu danych z potencjalnie zduplikowanymi wartościami.

Średnia ruchoma ostatnich 30 przedmiotów

Średnia ruchoma z ostatnich 30 sprzedanych przedmiotów

SELECT
    value_column1,
    (   SELECT
            AVG(value_column1) AS moving_average
        FROM Table1 T2
        WHERE ( SELECT
                    COUNT(*)
                FROM Table1 T3
                WHERE date_column1 BETWEEN T2.date_column1 AND T1.date_column1
                ) BETWEEN 1 AND 30
    ) as MovingAvg
FROM Table1 T1


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow