Поиск…


Центрированное скользящее среднее

Рассчитайте скользящее среднее значение по 6-месячному (126-дневному) среднему по цене:

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

Обратите внимание: поскольку в начале и в конце диапазона TradeDate он занимает до 63 строк до и после каждой возвращаемой строки, он не будет центрирован: когда он достигнет наибольшего TradeDate, он сможет найти только 63 предшествующих значения включить в среднем.

Найти самый последний элемент в списке событий, отмеченных по времени.

В таблицах, регистрирующих события, часто бывает поле datetime, записывающее время, когда произошло событие. Поиск единственного последнего события может быть затруднен, потому что всегда возможно, что два события были записаны с точно идентичными отметками времени. Вы можете использовать row_number () over (order by ...), чтобы убедиться, что все записи уникально ранжированы и выберите верхнюю (где my_ranking = 1)

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

Этот же метод можно использовать для возврата одной строки из любого набора данных с потенциально повторяющимися значениями.

Скользящее среднее за последние 30 пунктов

Скользящая средняя за последние 30 единиц

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow