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

Consulta SQL para média contínua de 7 dias no SQL Server


Experimentar:
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

Violino:

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

Substitua "avg(dailusage) over...." por sum (em vez de avg) se o que você realmente quer é a soma da semana passada. No seu título você diz que quer a média, mas depois diz que quer a soma. A consulta deve ser a mesma, então use a que você realmente deseja.

Como foi apontado por Gordon, esta é basicamente a média das últimas 6 datas em que o produto foi usado, que pode ser mais do que apenas os últimos 6 dias se houver dias sem nenhuma linha para esse produto na tabela porque não foi t usado em tudo. Para contornar isso, você pode usar uma tabela de datas e sua tabela de produtos.