Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за 7-дневна подвижна средна стойност в SQL Server

Опитайте:

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

Цигулка:

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

Заменете "avg(dailusage) over..." със sum (а не avg), ако това, което наистина искате, е сумата за изминалата седмица. В заглавието си казвате, че искате средната стойност, но по-късно казвате, че искате сумата. Заявката трябва да е същата, освен тази, така че използвайте каквото всъщност искате.

Както беше посочено от Гордън, това е основно средната стойност от последните 6 дати, в които продуктът е бил използван, което може да бъде повече от само последните 6 дни, ако има дни без редове за този продукт в таблицата, защото е не се използва изобщо. За да го заобиколите, можете да използвате таблица с дати и таблица с продуктите си.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql заявка за връщане на разлики между две таблици

  2. Как мога да вляза в съхранена процедура на SQL Server от моя C# код?

  3. Как да актуализирате статистиката на SQL Server за големи таблици

  4. Как да настроите съпоставянето на база данни в SQL Server (T-SQL)

  5. Преглед на мисии Най-новата услуга за наблюдение на база данни - Spotlight Cloud