Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como calcular a média móvel nas últimas n horas


Bem, o fato de você precisar calcular a média para cada hora, na verdade torna isso mais simples, pois você só precisa SUM a contagem do produto e divida-o por um número fixo (24). Então, acho que isso obterá os resultados desejados (embora, neste caso específico, um cursor seja realmente mais rápido):
SELECT A.*, B.ProductCount/24 DailyMovingAverage
FROM ProductInventory A
OUTER APPLY (   SELECT SUM(ProductCount) ProductCount
                FROM ProductInventory
                WHERE ProductName = A.ProductName 
                AND [Date] BETWEEN DATEADD(HOUR,-23,A.[Date]) AND A.[Date]) B