Это должен быть оператор UPDATE (или MERGE). Я подозреваю, что ваша первоначальная попытка выполнить оператор обновления не удалась, поскольку вы не соотносили подзапрос с таблицей, которую вы обновляете.
Я думаю, что вы ищете что-то вроде:
UPDATE author a
SET totalrevenue = (SELECT SUM(b.totalmargin) AS margin
FROM bookauthor ba
LEFT JOIN book b ON ba.ba_isbn = b.book_isbn
WHERE a.authorid = ba.ba_authorid)
WHERE totalrevenue != (SELECT SUM(b.totalmargin) AS margin
FROM bookauthor ba
LEFT JOIN book b ON ba.ba_isbn = b.book_isbn
WHERE a.authorid = ba.ba_authorid);
Я добавил предложение where, чтобы избежать обновления строк, которые уже имеют правильное значение. Вы можете исключить это, но если вы это сделаете, это будет означать, что каждая строка в таблице автора будет обновлена, даже если значение уже было правильным, то есть может быть выполнено больше работы, чем необходимо. Однако если вы создали этот столбец и вам нужно его заполнить впервые, вам не понадобится предложение where, так как вам все равно нужно обновлять каждую строку.