C опозданием, но отвечу.
Эффективно это значит макс результат за минимальное время. Так все просто - правильно ставить задачи.
Знаю, что после огромных постов выше, мой выглядит смешно, но в каждой шутке есть доля правды.
ну предположим, что у вас только одна запись = 'out'
тогда как вариант задачу разбиваем на 3
1. подсчет суммы value для in select sum(value) from .... where flag = 'in'
2. вычитание этой суммы из записи= 'out'
3. удаление записей where flag = 'in'
псевдо запрос примерно так
begin transaction
update tableName
set value = value + (select sum(value) from tableName where flag = 'in')
where flag = 'out'
delete tableName where flag = 'in'
commit transaction