Что-то похожее на такое должно получиться, вопрос только в группах в group by.
select id, bill,
sum(case goods_group
when 'phone' then sums
when 'accessoire' then sums end) as s
from sales
group by id, bill
having 2 = count(distinct
case goods_group
when 'phone' then 1
when 'accessoire' then 2
end)
только ещё раз, никогда не давайте имён в виде ключевых слов, на подобие sum. mysql "sum" в case приводит в 0 даже если экранировать и скобками - пол часа не мог понять в чем дело
С оптимальностью не заморачивался