Мне нужно рассчитать стандартное отклонение по ценам на акции, которые постоянно возвращаются на 7 дней назад. Например, у меня есть таблица, которая включает дату, цену, а затем название акции (поэтому на 27 мая есть 2 строки с 2 разными ценами, одна для акции A и одна для акции B):
| Дата | закрыть | сток |
| 27.05.2009 | 10 | A |
| 28.05.2009 | 15 | A |
| 29.05.2009 | 12 | A |
| 30.05.2009 | 13 | A |
| 31.05.2009 | 10 | A |
| 06/03/2019 | 11 | A |
| 06/04/2019 | 12 | A |
| 06/05/2019 | 15 | A |
| 06/06/2019 | 16 | A |
| 06/07/2019 | 17 | A |
| 27.05.2009 | 1353,5 | B |
| 28.05.2009 | 1356,2 | B |
| 29.05.2009 | 1352.65 | B |
| 30.05.2009 | 1355,65 | B |
| 31.05.2009 | 1354.2 | B |
| 06/03/2019 | 1356 | B |
| 06/04/2019 | 1351 | B |
| 06/05/2019 | 1352,5 | B |
| 06/06/2019 | 1350 | B |
| 06/07/2019 | 1349,3 | B |
Для каждого запаса (т.е. для запаса a, а затем для запаса b в таблице выше) мне нужно добавить столбец, который рассчитывает стандартное отклонение для предыдущих 7 строк:
+ ------------- + --------- + ----------- + ---------- ---------- +
| Дата | закрыть | акции | стандартное отклонение |
| 27.05.2009 | 10 | A |
| 28.05.2009 | 15 | A |
| 29.05.2009 | 12 | A |
| 30.05.2009 | 13 | A |
| 31.05.2009 | 10 | A |
| 06/03/2019 | 11 | A |
| 06/04/2019 | 12 | A | 1.772811
| 06/05/2019 | 15 | A | 1.902379
| 06/06/2019 | 16 | A | 2,13809
| 06/07/2019 | 17 | A | 2.636737
| 27.05.2009 | 1353,5 | B |
| 28.05.2009 | 1356,2 | B |
| 29.05.2009 | 1352.65 | B |
| 30.05.2009 | 1355,65 | B |
| 31.05.2009 | 1354.2 | B |
| 06/03/2019 | 1356 | B |
| 06/04/2019 | 1351 | Б | 1.935169
| 06/05/2019 | 1352,5 | Б | 2.027695
| 06/06/2019 | 1350 | Б | 2.261716
| 06/07/2019 | 1349,3 | Б | 2.696095
Я думаю, что проще разделить разные акции на разные таблицы, вычислить SD и затем объединить все вместе. Моя самая большая проблема заключается в том, что я использую MySQL 5.7, который не поддерживает функции Windows (т.е. отстает). У кого-нибудь есть предложения?
Я видел много прошлых вопросов, которые были аналогичны рекомендованным с использованием лимитов (упорядочены по дате и времени LIMIT 7), но мне нужно это для постоянного обновления в течение последних 7 дней, так как каждый день будет добавляться больше данных. Если я использую лимит и у меня есть данные за 3 недели, он просто вытянет первые 7, и я получу только одно вычисление SD, когда у меня будет 3. Я также видел этот пост Для каждой строки вычислите среднее значение для последних 20 строк в MySQL но похоже, что mysql 5.7 также не запускается во время циклов.