WHERE ic.price IN (
SELECT MAX(price)
FROM ice_cream
GROUP BY category_id
)
Представьте если у вас есть экзотические мороженые по цене 1000р и 500р и обычные по цене 500р и 300р. Тогда в результат попадет экзотическое мороженое по 500р. хотя оно не самое дорогое в категории