Code icon

MySQL - UNIONS

Links


    // UNIONS

    //--C1- Utilizando una fila para cada profesor: hacer número de asignaturas que imparten los profesores 'ANACLETO PI' y el profesor con casillero 78 Deben aparecer en cada linea los nombres de los profesores..2 filas
    SELECT 'Anacleto Pi' AS 'Profesor' , COUNT(AG.idAsignatura) FROM Profesor P
    RIGHT JOIN AsignaturasGrupo AG ON P.idProfesor = AG.idProfesor
    WHERE P.Nombre = 'ANACLETO PI' 
    UNION ALL
    SELECT 'Casillero 78' , COUNT(AG.idAsignatura) FROM Profesor P
    RIGHT JOIN AsignaturasGrupo AG ON P.idProfesor = AG.idProfesor
    WHERE P.Nombre like '%casillero 78%'
    
    
    //--C1- Con Group BY
    SELECT P.Nombre , COUNT(AG.idAsignatura) FROM Profesor P
    RIGHT JOIN AsignaturasGrupo AG ON P.idProfesor = AG.idProfesor
    WHERE P.Nombre = 'ANACLETO PI' OR P.Nombre like '%casillero 78%'
    GROUP BY P.Nombre;
    
    
    //--C2- Nota media de los alumnos del SAUZAL y nota media de los alumnos de TACORONTE - 2filas
    SELECT 'El Sauzal' AS 'Municipio', AVG(CAST(N.Nota AS FLOAT)) AS 'Nota media' FROM Nota N
    INNER JOIN Alumno A  ON N.idAlumno = A.idAlumno
    WHERE A.Municipio = 'EL SAUZAL'
    UNION ALL
    SELECT 'Tacoronte', AVG(CAST(N.Nota AS FLOAT)) AS 'Nota media' FROM Nota N
    INNER JOIN Alumno A ON N.idAlumno = A.idAlumno
    WHERE A.Municipio = 'TACORONTE'
    
    
    //--C2-Con Group By
    SELECT A.Municipio, AVG(CAST(N.Nota AS FLOAT)) AS 'Nota media' FROM Nota N
    INNER JOIN Alumno A ON N.idAlumno = A.idAlumno
    WHERE A.Municipio = 'EL SAUZAL' OR A.Municipio = 'TACORONTE'
    GROUP BY A.Municipio
    ORDER BY A.Municipio;

        

    //--CAST(AVG(N.Nota*1.0) AS DECIMAL(5,3)) 


    //--C3-Relación de notas del curso actual y del curso pasado (tabla CursoPasadoNotas) del alumno FEDERICO CARPANTA APOSTOL. 26 filas
    SELECT 'Curso Actual' AS "Año Academico", ASG.Denominacion AS 'Asignatura', N.idAsignatura, N.Nota FROM Alumno A
    JOIN nota N ON A.idAlumno = N.idAlumno
    JOIN Asignatura ASG ON N.idAsignatura = ASG.idAsignatura	
    WHERE A.Nombre = 'FEDERICO' AND A.Apellidos = 'CARPANTA APOSTOL'
    UNION ALL
    SELECT 'Curso Pasado', ASG.Denominacion, CPN.CodAsignatura,  CPN.Nota FROM Alumno A
    JOIN CursoPasadoNotas CPN ON A.idAlumno = CPN.CodigoAlumno
    JOIN Asignatura ASG ON CPN.CodAsignatura = ASG.idAsignatura	
    WHERE A.Nombre = 'FEDERICO' AND A.Apellidos = 'CARPANTA APOSTOL'
    ORDER BY ASG.Denominacion;