To zapytanie:
select sum(amount)
from aaa
where id not in (select id from bbb);
Jest interpretowany jako:
select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);
ponieważ bbb.id
nie istnieje. Pisząc SQL sugeruję, abyś zawsze używał aliasów tabel. Zapytanie, o którym myślałeś, że piszesz:
select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);
wygeneruje oczekiwany błąd.