Está en la página 1de 2

--Indicar por jornada la cantidad de docentes que dictan y sumar los costos.

Esta
información solo se desea visualizar
--para las asignaturas de desarrollo web.
--El resultado debe contener todos los valores registrados en la primera tabla,
--Renombrar la columna del calculo de la cantidad de docentes como cant_docentes y
--la columna de la suma de los costos como suma_total. Keywords: Asignaturas,Staff,
DocentesID, Jornada, Nombre, costo.
SELECT
Asignaturas.AsignaturasID, Asignaturas.Nombre, Asignaturas.Tipo,
Asignaturas.Jornada, Asignaturas.Area, SUM(Asignaturas.Costo) AS Suma_Total,
COUNT(Staff.DocentesID) AS cant_docentes
FROM Asignaturas LEFT JOIN Staff
ON Asignaturas.AsignaturasID = Staff.Asignatura
WHERE Asignaturas.Nombre LIKE '%Desarrollo Web%'
GROUP BY Asignaturas.AsignaturasID, Asignaturas.Nombre, Asignaturas.Tipo,
Asignaturas.Jornada, Asignaturas.Area;

-- o mas corto
SELECT Asignaturas.Jornada,
SUM(Asignaturas.Costo) AS Suma_Total, COUNT(Staff.DocentesID) AS Cant_Docentes
FROM Asignaturas LEFT JOIN Staff
ON Asignaturas.AsignaturasID = Staff.Asignatura
WHERE Asignaturas.Nombre LIKE '%Desarrollo Web%'
GROUP BY Asignaturas.Jornada

--Se requiere saber el id del encargado, el nombre, el apellido y cuantos son los
--docentes que tiene asignados cada encargado. Luego filtrar los encargados que
--tienen como resultado 0 ya que son los encargados que NO tienen asignado un
docente.
--Renombrar el campo de la operación como Cant_Docentes. Keywords: Docentes_id,
Encargado, Staff, Nombre, Apellido,Encargado_ID.
SELECT
Encargado.Encargado_ID, Encargado.Nombre, Encargado.Apellido,
COUNT(Staff.DocentesID) AS Cant_Docentes
FROM Encargado LEFT JOIN Staff
ON Encargado.Encargado_ID = Staff.Encargado
GROUP BY Encargado.Encargado_ID, Encargado.Nombre, Encargado.Apellido
HAVING COUNT(Staff.DocentesID) > 0;

--Se requiere saber todos los datos de asignaturas que no tienen un docente
asignado. El modelo de la consulta debe partir desde la tabla docentes. Keywords:
Staff, Encargado, Asignaturas, costo, Area.
SELECT Asignaturas.*
FROM Staff RIGHT JOIN Asignaturas
ON Staff.Asignatura = Asignaturas.AsignaturasID
WHERE Staff.DocentesID IS NULL;

--Se quiere conocer la siguiente información de los docentes. El nombre completo


concatenar el nombre y el apellido.
--Renombrar NombresCompletos, el documento, hacer un calculo para conocer los meses
de ingreso.
--Renombrar meses_ingreso, el nombre del encargado. Renombrar NombreEncargado, el
tefelono del encargado.
--Renombrar TelefonoEncargado, el nombre del curso o carrera, la jornada y el nombre
del área.
--Solo se desean visualizar solo los que llevan mas de 3 meses.Ordenar los meses de
ingreso de mayor a menor.
--Keywords: Encargo,Area,Staff,jornada, fecha ingreso.
SELECT
CONCAT(Staff.Nombre, ' ', Staff.Apellido) AS NombresCompletos,
Staff.Documento, DATEDIFF(MONTH, Staff.[Fecha Ingreso], GETDATE()) AS meses_ingreso,
Encargado.Nombre AS NombreEncargado, Encargado.Telefono AS TelefonoEncargado,
Asignaturas.Nombre AS Nombre_Asignatura, Asignaturas.Jornada,
Area.Nombre AS Nombre_Area
FROM Staff LEFT JOIN Encargado
ON Staff.Encargado = Encargado.Encargado_ID
LEFT JOIN Asignaturas
ON Staff.Asignatura = Asignaturas.AsignaturasID
LEFT JOIN Area
ON Asignaturas.Area = Area.AreaID
WHERE DATEDIFF(MONTH, Staff.[Fecha Ingreso], GETDATE()) > 3
ORDER BY meses_ingreso DESC;

--Armar una lista con Nombre, Apellido, Documento y Tipo con todos los docentes,
estudiantes y encargados. Esta última columna debe identificar de qué tipo se trata
(es decir, si es estudiante, la columna Tipo, debe decir “Estudiante”…)
SELECT Nombre, Apellido, Documento, 'Encargado' AS Tipo
FROM Encargado

UNION

SELECT Nombre, Apellido, Documento, 'Docente' AS Tipo


FROM Staff

UNION

SELECT Nombre, Apellido, Documento, 'Estudiante' AS Tipo


FROM Estudiantes

También podría gustarte