Я работаю в базе данных, которая постоянно заполняется данными, поступающими с какого-либо оборудования. К сожалению, за последние месяцы некоторые данные оказались неверными, заполнив базу мусором. Чтобы это исправить, мне нужно обновить неправильные строки простым средним значением трех последних данных, сохраненных перед каждой ошибочной строкой.
Есть ли прямой код для этого? Я вручную вычислял и обновлял каждую строку в последние часы, и это не очень продуктивно. Я знаю, что могу использовать UPDATE с SELECT, чтобы изменить данные строки с данными из другой таблицы, но как мне «выбрать последние три данных со столбцом id = equip_id, sum, делить на три и обновить, где я хочу»? Я думал примерно так:
UPDATE problem_table
SET Col1 = problem_table_id.Col1,
Col2 = problem_table_id.Col2
FROM (
SELECT EQUIP_ID, Col1, Col2
FROM problem_table) problem_table_id
WHERE
EQUIP_ID = the_id_i_want and
DATA_ID < curr_buggy_row
Но это (или что-то в этом роде) не будет иметь среднее значение последних X-данных, но, в лучшем случае, последних данных перед строкой с ошибками.