次の表を更新するために、いくつかのヘルプ(できればダミーのガイド)を使用できます。
CREATE TABLE `SYMBOL` (
`day` date NOT NULL,
`open` decimal(8,3) DEFAULT NULL,
`high` decimal(8,3) DEFAULT NULL,
`low` decimal(8,3) DEFAULT NULL,
`close` decimal(8,3) DEFAULT NULL,
`volume` bigint(20) DEFAULT NULL,
`adj_close` decimal(8,3) DEFAULT NULL,
`moving_average` decimal(8,3) DEFAULT NULL,
PRIMARY KEY (`day`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
moving_average 列は現在空です。他のすべての列が入力されます (当面は、これが「静的」であっても問題ありません。行を追加するときに更新する必要はありませんが、これが簡単に実行できるのであれば、それは素晴らしいことです)。計算したいのは20日移動平均です。
ここの手順をできる限り実行してみました。
MySQL を使用して移動平均を計算するにはどうすればよいですか?
私のクエリはこれです:
SELECT
`close`,
(
SELECT
AVG(`close`) AS moving_average
FROM
SYMBOL T2
WHERE
(
SELECT
COUNT(*)
FROM
SYMBOL T3
WHERE
`day` BETWEEN T2.day AND T1.day
) BETWEEN 1 AND 20
)
FROM
SYMBOL T1
クエリを正しく変更しましたか? 結果をmoving_average列に書き込むために何をする必要がありますか?
上記を実行すると、何も起こりません(実行中、エラーなし、長時間実行した後、停止したと表示されます)。列 moving_average にはまだ NULL 値があります。
この回答も見ました: MySQLで複数の移動平均を計算する方法
ただし、テーブルの返信に何を変更する必要があるのか わかりません。
どんな助けでも大歓迎です。