У меня проблемы с задачей в SQL Server. Имя таблицы, которую я собираюсь создать, называется «цель».
CREATE TABLE target
(
[entry_date] [date] NOT NULL,
[value] [int] NOT NULL,
[id] [int] NULL,
)
INSERT target VALUES ( '2012-02-01', 10, 1);
INSERT target VALUES ( '2012-02-02', 20, 2);
INSERT target VALUES ( '2012-02-03', 10, 3);
INSERT target VALUES ( '2012-02-04', 30, 4);
INSERT target VALUES ( '2012-02-05', 10, 3);
INSERT target VALUES ( '2012-02-06', 11, 3);
INSERT target VALUES ( '2012-02-06', 40, 6);
INSERT target VALUES ( '2012-02-07', 10, 2);
INSERT target VALUES ( '2012-02-08', 50, 5);
INSERT target VALUES ( '2012-02-09', 10, 8);
INSERT target VALUES ( '2012-02-10', 60, 9);
INSERT target VALUES ( '2012-02-10', 50, 9);
Основываясь на приведенных выше данных, я хочу получить вывод, как показано ниже:
entry_date |value|id |averagevaluesof_3days
-----------+-----+----+----------------------
2012-02-01 |10 |1 | 10
2012-02-02 |20 |2 | 10
2012-02-03 |10 |3 | 13.3
2012-02-04 |30 |4 | 20
2012-02-05 |10 |3 | 16.6
2012-02-06 |40 |6 | 30.3
2012-02-06 |11 |3 | 30.3
2012-02-07 |10 |2 | 23.6
2012-02-08 |50 |5 | 37
2012-02-09 |10 |8 | 23.3
2012-02-10 |60 |9 | 56.6
2012-02-10 |50 |9 | 56.6
Мне нужно рассчитать средние значения текущей информации за последние три дня на дату (entry_date
).
Позвольте мне привести пример, объясняющий мою цель:
Дата_входа: 2012-02-01
Эта дата имеет значение, а 2 дня назад не имеют значения, тогда среднее значение 2012-02-01 равно 10, если мы возьмем дату 2012-02-02, имеющую значение, а 2 дня назад означает 2012-02-01 и 2012-01-31. здесь у нас есть значение даты 2012-02-01, но у нас нет значения даты 2012-01-31, тогда возьмите среднее значение за 3 дня для 2012-02-02, дата равна 10 ((10 + 20)/3 = 10), если мы возьмите 2012-02-03 13,3 ((10+20+10)/3 = 13,3)
Подскажите, пожалуйста, как написать запрос для выполнения этой задачи для SQL Server.