Это пример запроса «sets-in-sets». Я рекомендую агрегацию с предложением having
, потому что это наиболее гибкий подход.
select score
from t
group by score
having sum(id = 2) > 0 and -- has id = 2
sum(id = 4) > 0 -- has id = 4
Что это значит, это агрегирование по результату. Тогда первая часть предложения having
(sum(id = 2)
) подсчитывает, сколько «2» есть для каждого балла. Второй подсчитывает количество «4». Возвращаются только те, которые имеют значения «2» и «4».