El problema que tienes es el GROUP BY, ya que esa funcion te reduce el resultado a UNA fila por cada categoria encontrada.
Si lo que quieres es hacer grupos VISUALES en tu tabla, deberás ORDER BY categoria y hacer que tu script se encargue de poner la estructura correcta en la tabla.