#sql #calculation
#sql #расчет
Вопрос:
Я работаю над проектом phpmysql, который я дал себе в попытке узнать больше о запросах. Я добавил новый столбец под названием РАСЧЕТ.
Что я хочу сделать, так это после обновления базы данных выполнить расчет. Этот расчет был бы:
ГРОМКОСТЬ * (ВЫСОКАЯ — НИЗКАЯ)
и это значение появится в соответствующей строке под столбцом РАСЧЕТА.
Итак, взяв AAL, например, из опубликованного скриншота:
24847975 * (20.02 — 19.36) = 16399663.50 (появится в столбце «РАСЧЕТ» для AAL.
Таким образом, таблица обновляется ежедневно, а затем, когда она обновляется, я хотел бы выполнить на ней расчет. Я рассматриваю идею о том, что это может быть ТРИГГЕРОМ, но был бы признателен за некоторые рекомендации по этому вопросу.
Было бы полезно выполнить этот расчет только в том случае, если внутри строки ничего нет, так как это было бы пустой тратой ресурсов, пересчитывая все заново.
Ответ №1:
Я бы рекомендовал создать представление, в котором есть столбец расчета, представляющий собой совокупность ВЫСОКИХ * НИЗКИХ значений. Что-то вроде следующего:
CREATE VIEW [viewName] AS SELECT (high*low) as calculation FROM tableName
Ответ №2:
Триггеры хороши для ваших нужд! Они позволяют выполнять операцию после операции в одном ряду. Вы можете определить в своей таблице триггер для ВСТАВКИ и триггер для ОБНОВЛЕНИЯ (они могут быть выполнены до или после операции).
Когда вы выполняете ВСТАВКУ (или ОБНОВЛЕНИЕ), триггер может вычислить значение и ввести его в ваш столбец.
Другим более простым решением может быть выполнение другого запроса на обновление после завершения обновления таблицы.
Ответ №3:
Есть сгенерированный столбец:
create table ... ( ... calculation float GENERATED ALWAYS AS (VOLUME * (HIGH - LOW)), ... )
(Вы можете выбрать другой тип данных, если хотите, я не очень хорошо знаю MySQL…)