Myslím, že toto je správné řešení...
Dílčí dotaz se používá k odfiltrování pijáků, kteří navštěvují bar s nulovým počtem piv, která mají rádi.
select distinct drinker
from frequents
where drinker not in (
select f.drinker
from frequents f
join sells s on f.bar = s.bar
left join likes l on l.drinker = f.drinker and l.beer = s.beer
group by f.drinker, f.bar
having count(l.drinker) = 0
);