sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta SQL para el promedio móvil de 7 días en SQL Server

Prueba:

select x.*,
       avg(dailyusage) over(partition by productid order by productid, date rows between 6 preceding and current row) as rolling_avg
  from (select productid, date, sum(usagecount) as dailyusage
          from tbl
         group by productid, date) x

Violín:

http://sqlfiddle.com/#!6/f674a7/4/0

Reemplace "avg(dailusage) over...." con sum (en lugar de avg) si lo que realmente quiere es la suma de la semana pasada. En su título dice que quiere el promedio, pero luego dice que quiere la suma. Aparte de eso, la consulta debería ser la misma, así que usa la que realmente quieras.

Como señaló Gordon, esto es básicamente el promedio de las últimas 6 fechas en las que se usó el producto, lo que podría ser más que solo los últimos 6 días si hay días sin filas para ese producto en la tabla porque no fue No se usa en absoluto. Para evitar eso, podría usar una tabla de fechas y su tabla de productos.