select category_id, category_name, gender, count(id) from product
inner join category on category.id=product.category_id
group by category_id, gender
Получится построчно, (категория, пол, кол-во). это самый просто способ получить ваши данные. при сортировке по категории, можно сделать финальную таблицу как у вас.
Либо если вам нужно именно в таком варианте и плевать на сам запрос, то выглядеть это должно так , но сначала нужно обернуть в таблицу следующий запрос:
выбрать таблицу с группировками только для М (категория, имя категории, кол-во, 0) где пол=M
UNION
выбрать таблицу с группировками только для Ж (категория, имя категории,0, кол-во) где пол=Ж