Les comparto y guardo aquí mi consulta, la cual me parece interesante, por el hecho de usar sub consultas, y algo que muchos tienen duda, ¿Como mostrar restados que están en filas, concatenado para que sea una?, en este caso para no repetir los registros según los días de la clase, mejor los agrupe en un solo resultado.
Otro ejemplo de uso en esta consulta es el uso de un switch case o switch, asi como de la función trim, que elimina los espacios en blanco al inicio y final de una cadena, en este caso para el nombre del aula tiene espacio al final, por eso me veo en la necesidad de usarla.
SELECT g.periodo, g.rfc, g.exclusivo_carrera,
(SELECT creditos_materia FROM materias_carreras WHERE materia = m.materia AND carrera = g.exclusivo_carrera) creditos,
o.descripcion_area,
CONCAT( p.nombre_empleado, ' ', p.apellidos_empleado) AS profesor,
m.materia, m.nombre_completo_materia,
g.exclusivo_reticula ,
g.grupo,
g.alumnos_inscritos,
g.paralelo_de,
(SELECT DISTINCT GROUP_CONCAT(
(CASE
WHEN dia_semana = 2 THEN 'Lu'
WHEN dia_semana = 3 THEN 'Ma'
WHEN dia_semana = 4 THEN 'Mi'
WHEN dia_semana = 5 THEN 'Ju'
WHEN dia_semana = 6 THEN 'Vi'
WHEN dia_semana = 7 THEN 'Sa'
END) , '-', TRIM(aula), ' de ', DATE_FORMAT(hora_inicial, '%H'), ' a ' ,DATE_FORMAT(hora_final, '%H'), ' ') AS horario
FROM horarios
WHERE grupo = g.grupo AND materia = g.materia
) AS horario
FROM grupos g
INNER JOIN materias m ON g.materia = m.materia
INNER JOIN organigrama o ON o.clave_area = m.clave_area
LEFT JOIN personal p ON g.rfc = p.rfc
LIMIT 2000