--1. Mostrar el código, nombre y apellidos de todos los directores.
select idempleado, nombre, apellido
from empleados
where director is not null
--2. Mostrar los datos de los empleados que no tienen jefes.
select idempleado, nombre, apellido,cargo,salario
from empleados
where director is null
--3. Mostrar el nombre y apellidos de cada director, junto con la capacidad del
--departamento en el que se encuentra.
select nombre,apellido, capacidad
from empleados as emp
inner join departamento as dep
on emp.idDepartamento = dep.idDepartamento
--4. Mostrar el número de directores que hay en cada departamento.
select count(director) as cantidad_de_directores, dNombre
from empleados as em
inner join departamento as dep
on em.idDepartamento = dep.idDepartamento
group by dNombre
--5. Mostrar los datos de los directores cuyos jefes no tienen jefes.
select idempleado, nombre, apellido,cargo,salario
from empleados
where idempleado in (select idempleado from empleados where idempleado is null)
--6. Mostrar los nombres y apellidos de los directores junto con los de su jefe.
--7. Mostrar el número de departamento que están sobre utilizados.
select dNombre, count(em.idDepartamento)
from empleados em
inner join departamento as dep
on em.idDepartamento = dep.idDepartamento
where capacidad < (select count(em.idDepartamento))
--8. Añadir un nuevo empleado llamado Paco Perez, código 28301700, sin jefe, y
situado
-- en el despacho 124.
insert into empleados
values(28301700, 'Paco', 'Perez', null,null,null,null,null,20 )
--9. Asignar a todos los empleados apellidados Perez un nuevo jefe con código
74568521.
update empleados set Director = 74568521
where apellido = 'Perez'
--10. Despedir a todos los directores, excepto a los que no tienen jefe.
update Empleados set Cargo = 'Despedido'
where Cargo = Director and Director is null
--11. Obtener todos los datos de los empleados que trabajan para el departamento 10
y
--para el departamento 40.
select IdEmpleado, Nombre, Apellido,Cargo,Director, Salario, Comision
from empleados
where IdDepartamento = 10
union
select IdEmpleado, Nombre, Apellido,Cargo,Director, Salario, Comision
from empleados
where IdDepartamento = 40
--12. Obtener los nombres y apellidos de los empleados que trabajen en departamentos
--cuyo presupuesto sea mayor de 60.000.
select Nombre, Apellido from Empleados as e
inner join Departamento as d
on Presupuesto < 60000
--13. Obtener los datos de los departamentos cuyo presupuesto es superior al
presupuesto
--medio de todos los departamentos.
select IdDepartamento, DNombre,Localizacion,Capacidad, Presupuesto
from( select 1 as id,IdDepartamento, DNombre,Localizacion,Capacidad, Presupuesto
from Departamento
) as a
inner join(
select max(1) as id,AVG(Presupuesto ) as Medio_Presupuesto
from Departamento
)as b on a.id = b.id
where a.Presupuesto> Medio_Presupuesto
--14. Obtener los nombres (únicamente los nombres) de los departamentos que tienen
más
select dNombre
from departamento as dep
inner join empleados as em
on dep.idDepartamento = em.idDepartamento
group by dNombre
having count(em.idDepartamento) > 2
--15. Obtener un listado completo de empleados, incluyendo el nombre y apellidos del
--empleado junto al nombre y presupuesto de su departamento.
select Nombre, Apellido, DNombre, Presupuesto from Empleados as e
inner join Departamento as d
on e.IdDepartamento = d.IdDepartamento
--16. Aplicar un recorte presupuestario del 10 % a todos los departamentos.
select (0.1 * Presupuesto) as Presupuestario
from Departamento
--17. Despedir a todos los empleados que trabajen para departamentos cuyo salario
sea
--superior al presupuesto.
update Empleados set Cargo = 'Despedido'
where Salario > (select Presupuesto from Departamento)
--18. Mostrar el nombre y apellidos de cada director, junto con la capacidad del
--departamento en el que se encuentra.
select Nombre, Apellido, DNombre from Empleados as e
inner join Departamento as d
on Cargo = 'Director' and e.IdDepartamento = d.IdDepartamento