Моя проблема в том, что я пытаюсь вычислить скользящее среднее по некоторым значениям из моей таблицы (по одному среднему значению для каждой строки). Это на самом деле работает, но если дело доходит до пробелов, таких как id [20,18,17] или date [2018-05-11,2018-05-9,2018-05-8] расчет становится неправильным. Я ищу способ использовать определенное количество следующих строк, чтобы этого не произошло.
Таблица содержит id (auto_increment), date and close (Float)
.
Это мой код:
CREATE DEFINER=`root`@`localhost` PROCEDURE `moving_avg`(IN periode INT)
NO SQL
BEGIN
select hist_ask.id, hist_ask.date, hist_ask.close, round(avg(past.close),2) as mavg
from hist_ask
join hist_ask as past
on past.id between hist_ask.id - (periode-1) and hist_ask.id
group by hist_ask.id, hist_ask.close
ORDER BY hist_ask.id DESC
LIMIT 10;
END
Таблица, которую я использую, выглядит следующим образом
id , date , close
20 , 2018-10-13 , 12086.5
19 , 2018-10-12 , 12002.2
17 , 2018-10-11 , 12007.0
and so on
Вывод выглядит так:
Вывод, полученный по запросу
Заранее спасибо!