Esta consulta:
select sum(amount)
from aaa
where id not in (select id from bbb);
Se interpreta como:
select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);
porque bbb.id
no existe. Al escribir SQL, sugiero que siempre use alias de tabla. La consulta que pensabas que estabas escribiendo:
select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);
generaría el error que esperas.