Diese Abfrage:
select sum(amount)
from aaa
where id not in (select id from bbb);
Wird interpretiert als:
select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);
weil bbb.id
ist nicht vorhanden. Beim Schreiben von SQL schlage ich vor, dass Sie immer Tabellenaliase verwenden. Die Abfrage, von der Sie dachten, dass Sie sie schreiben:
select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);
würde den erwarteten Fehler erzeugen.