with cat_max(cat_id, max_price) as
(
select category, MAX(price)
from Product
group by category
)
select c.name as 'Category', p.name as 'Product', cm.max_price as 'Max price'
from Product as p join cat_max as cm
on p.price = cm.max_price
and p.category = cm.cat_id
join Category as c on c.id = cm.cat_id