2016-03-15 2 views
0

Благодарим за помощь. Может кто-нибудь, пожалуйста, помогите мне с SQL-запросом дляSQL Query Среднее значение за последние 3 дня в таблице

У меня есть ежедневный стол, как

> Date  | Sales_Rep_ID| Product ID | Zone | Sales 
    > 31 Jan 2015 | 001   | P01| EMEA | 10 
    > 31 Jan 2015 | 002   | P02| EMEA | 10 
    > 31 Jan 2015 | 003   | P02| EMEA | 10 
    > 30 Jan 2015 | 001   | P01| EMEA | 8 
    > 30 Jan 2015 | 002   | P02| EMEA | 7 
    > 30 Jan 2015 | 003   | P02| EMEA | 2 

и хотел среднее последнего п дней в последней колонке в зависимости от даты, респ идентификатора, идентификатор продукта

Date  | Sales_Rep_ID| Product ID | Zone | Sales | AVG_3_DAYS 
31 Jan 2015 | 001   | P01  | EMEA | 10 | 9 
31 Jan 2015 | 002   | P02  | EMEA | 10 | 8.5 
31 Jan 2015 | 003   | P02  | EMEA | 10 | 6 
30 Jan 2015 | 001   | P01  | EMEA | 8  | . 
30 Jan 2015 | 002   | P02  | EMEA | 7  | . 
30 Jan 2015 | 003   | P02  | EMEA | 2  | . 

Например

на дату строки 1, 31 января, и мы должны в среднем на 31,30, 29 января для отдела продаж 001 и идентификатор продукта 002

и для строки 4 дата 30 января, и мы должны в среднем на 30, 29, 38 января для отдела продаж 001 и идентификатор продукта 002

+0

Каковы ваши исследования? что вы попробовали? У вас есть запрос, который мы можем пересмотреть? – SWiggels

ответ

1

В SQL Server, вы можете использовать apply для этой цели:

select t.*, tt.avgsales 
from t outer apply 
    (select avg(sales) as avgsales 
     from t t2 
     where t2.rep_id = t.rep_id and 
      t2.product_id = t.product_id 
      t2.date <= t.date and 
      t2.date > dateadd(day, -3, t.date) 
    ) tt; 
+0

Гордон Спасибо за быстрый ответ. Я пробовал, но он не реагировал. Есть другой способ сделать это. –

+0

Я бы порекомендовал индекс на 't (rep_id, product_id, date)'. –

Смежные вопросы