Buscar..


Media móvil centrada

Calcule un promedio móvil de 6 meses (126 días hábiles) centrado en un precio:

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

Tenga en cuenta que, debido a que tomará hasta 63 filas antes y después de cada fila devuelta, al comienzo y al final del rango de TradeDate no estará centrado: cuando alcance la mayor TradeDate, solo podrá encontrar 63 valores anteriores a Incluir en la media.

Encuentre el elemento más reciente en una lista de eventos con marca de tiempo

En las tablas que registran eventos, a menudo hay un campo de fecha y hora que registra la hora en que ocurrió un evento. Encontrar el evento más reciente puede ser difícil porque siempre es posible que dos eventos se registraron con marcas de tiempo exactamente idénticas. Puede usar el número de fila () sobre (ordenar por ...) para asegurarse de que todos los registros estén clasificados de forma única, y seleccionar el primero (donde my_ranking = 1)

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

Esta misma técnica se puede usar para devolver una sola fila desde cualquier conjunto de datos con valores potencialmente duplicados.

Promedio móvil de los últimos 30 artículos

Promedio móvil de los últimos 30 artículos vendidos

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow