Добавить скользящее среднее столбца в MySQL - PullRequest
0 голосов
/ 20 февраля 2019

В настоящее время я добавляю данные криптовалюты в мою базу данных mysql.У меня есть следующие данные в минуту:

Open time 
Close time
Highest price
Lowest price 
Number of trades

Я хотел бы добавить простую скользящую среднюю различных периодов времени в базу данных MySQL.Я пытался сделать этот расчет в Python, но это заняло много времени.Поэтому я вычислил SMA для 50-дневного периода с помощью следующего запроса.

mycursor.execute(
    """select 
           open_date,
           avg(close) over(rows between 49 preceding and current row) 
       from {}""".format(use_table)
)

Однако, помимо выполнения запроса, я хотел бы напрямую обновить результат для SMA в базе данных.Желательно, чтобы у меня был запрос на обновление всех SMA, которые еще не рассчитаны.Так как я обновляю свою базу данных один раз в день.

Поскольку я новичок в использовании SQL, любой совет о том, как обновить столбец с помощью SMA, будет очень полезен.

1 Ответ

0 голосов
/ 20 февраля 2019

Можно превратить ваш запрос SELECT в UPDATE.Хитрость заключается в том, чтобы вызвать оконную функцию (AVG(...) OVER(...)) внутри запроса.Вы можете использовать предложение WHERE для обновления только тех записей, которые еще не были рассчитаны.

UPDATE mytable trg
INNER JOIN (
    SELECT
        open_date,
        AVG(close) OVER(ROWS BETWEEN 49 PRECEDING AND CURRENT ROW) sma
    FROM mytable
) src ON trg.id = src.id
SET trg.sma = src.sma
WHERE trg.sma IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...