У меня есть таблица с неделей неделя число и среднее время время . Пример таблицы данных ниже.
CREATE TABLE my_table (
`week` INTEGER,
`time` INTEGER
);
INSERT INTO my_table
(`week`, `time`)
VALUES
('14', '-249'),
('15', '-267'),
('16', '-254'),
('17', '-256'),
('18', '-254'),
('19', '-262'),
('20', '-265'),
('21', '-263'),
('22', '-258'),
('23', '-257'),
('24', '-269'),
('25', '-278'),
('26', '-278'),
('27', '-285');
Я запускаю следующий код, чтобы получить 4-недельное скользящее среднее на основе данных:
SELECT week, time, avg(time)
OVER (ORDER BY time ROWS BETWEEN 4 PRECEDING AND 0 FOLLOWING) AS moving_average
FROM my_table
ORDER BY week ASC
Что дает мне следующий вывод:
week time moving_average
14 -249 -254
15 -267 -275
16 -254 -257
17 -256 -259
18 -254 -255
19 -262 -265
20 -265 -271
21 -263 -268
22 -258 -263
23 -257 -261
24 -269 -277
25 -278 -281
26 -278 -280
27 -285 -285
Однако скользящая средняя не верна. Это должно выглядеть так:
Desired Results
week time moving_average
14 -249 null
15 -267 null
16 -254 null
17 -256 -257
18 -254 -258
19 -262 -257
20 -265 -259
21 -263 -261
22 -258 -262
23 -257 -261
24 -269 -262
25 -278 -266
26 -278 -271
27 -285 -278
Можете ли вы предложить, как я могу пересмотреть свой SQL-запрос, чтобы получить точное скользящее среднее, как показано в Желаемых результатах?