No esta bien explicada tu pregunta, de partida no se trata de agrupar, se trata de ordenar tendrias que hacer una sub query ademas creo que deberias hacer una consulta para unir con la cantidad de datos por region y luego ordenar segun ese dato select final.codigo, final,nombre, final.region from( Select t.codigo, t.nombre, t.region, cant.cantidad from tabla t inner join ( select t2.region, count (*) Cantidad from tabla t2 group by t2.region) cant on (t.region=cant.region) ) final order by final.cantidad desc, final.region asc explicado: Unes la tabla normal con un resultado de la tabla donde te dice la cantidad de elementos por region y ese resultado lo ordenas por cantidad de elementos por region descendentemente y por la region ascendentemente Saludos