В вашем запросе есть ошибки:
SELECT procedure_id, SELECT MIN(TIME) AS START FROM procedure_events GROUP BY procedure_id
Это нехорошо, вы используете select для каждого запроса, а не для каждого поля, которое вы хотите получить, или функции, которую вы хотите вычислить, поэтому выше будет:
SELECT procedure_id, MIN(TIME) AS START FROM procedure_events GROUP BY procedure_id
Во-вторых, TIME и START являются зарезервированными словами и не могут использоваться в качестве имен полей (если они не заключены в обратные символы `` - но это не очень хорошая рекомендация).
Всегда старайтесь максимально упростить ваши запросы - это даст вам:
Если вы просто хотите рассчитать продолжительность процедуры, это может дать вам отправную точку:
SELECT
procedure_id,
TIMEDIFF(MAX(`time`), MIN(`TIME`)) AS duration
FROM procedure_events
GROUP BY procedure_id
Затем вы можете вставить вычисленное значение в соответствующую таблицу.
Приветствие.