Complejas III

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 6

1. Visualizar el nmero de empleados de cada departamento. Utilizar GROUP BY para agrupar por departamento.

select dept_no,count(*) from emple group by dept_no; 2. Visualizar los departamentos con ms de 5 empleados. Utilizar GROUP BY para agrupar por departamento y HAVING para establecer la condicin sobre los grupos. select emple.dept_no,count(*) from emple,depart where emple.dept_no=depart.dept_no group by emple.dept_no having count(*)>5; 3. Hallar la media de los salarios de cada departamento. Utilizar la funcin avg y GROUP BY. select emple.dept_no,round(avg(salario),2) from emple,depart where emple.dept_no=depart.dept_no group by emple.dept_no; 4.Visualizar el nombre de los empleados vendedores del departamento VENTAS. (Nombre del departamento=VENTAS, oficio=VENDEDOR). select apellido from emple,depart where emple.dept_no=depart.dept_no and dnombre='VENTAS' and oficio='VENDEDOR'; 5. Visualizar el nmero de vendedores del departamento VENTAS. Utilizar la funcin COUNT sobre la consulta anterior. select count(*) from emple,depart where emple.dept_no=depart.dept_no and dnombre='VENTAS' and oficio='VENDEDOR'; 6. Visualizar los oficios de los empleados del departamento VENTAS. select apellido,oficio from emple,depart where emple.dept_no=depart.dept_no and dnombre='VENTAS';

7. A partir de la tabla EMPLE, visualizar el nmero de empleados de cada departamento cuyo oficio sea EMPLEADO. Utilizar GROUP BY para agrupar por departamento. En la clusula WHERE habr que indicar que oficio es EMPLEADO. select emple.dept_no, count(*) from emple, depart where emple.dept_no=depart.dept_no and oficio='EMPLEADO' group by emple.dept_no union select depart.dept_no, 0 from depart where dept_no not in (select dept_no from emple where oficio='EMPLEADO'); 8. Visualizar el departamento con ms empleados. Create view numemppordept as select count(*) as numemp from emple group by dept_no; select * from depart where dept_no = (select dept_no from emple group by dept_no having count(*)=(select max(numemp) from numemppordept)); 9. Mostrar los departamentos cuya suma de salarios sea mayor que la media de salarios de todos los empleados. select dept_no,avg(salario) from emple group by dept_no having avg(salario)>(select avg(salario) from emple); 10. Para cada oficio obtener la suma de salarios. select oficio,sum(salario) from emple group by oficio; 11.Visualizar VENTAS. la suma de salarios de cada oficio del departamento

select oficio,sum(salario) from emple, depart where emple.dept_no=depart.dept_no and dnombre='VENTAS' group by oficio;

12. Visualizar el nmero de departamento que tenga ms empleados cuyo oficio sea empleado. Create view numemplepordepart as select count(*) as num from emple where oficio='EMPLEADO' group by dept_no; select dept_no from emple where oficio='EMPLEADO' group by dept_no having count(*)=(select max(num) from numemplepordepart); 13. Mostrar el nmero de oficios distintos de cada departamento. select count(distinct oficio) from emple; 14. Mostrar los departamentos que tengan ms de dos personas trabajando en la misma profesin. select dept_no, oficio, count(*) as num from emple group by dept_no,oficio having count(*)>2; 15. Dada la tabla HERRAMIENTAS, visualizar por cada estantera la suma de las unidades. select estanteria,sum(unidades) from herramientas group by estanteria; 16. Visualizar la estantera con ms unidades de la tabla HERRAMIENTAS. Create view numherrporest as select sum(unidades) as numherr from herramientas group by estanteria; select estanteria,sum(unidades) from herramientas group by estanteria having sum(unidades)=(select max(numherr) from numherrporest); 17. Mostrar el nmero de mdicos que pertenecen a cada hospital, ordenado por nmero descendente de hospital. select hospitales.nombre,count(*) from hospitales, medicos where hospitales.cod_hospi=medicos.cod_hospi group by hospitales.cod_hospi order by hospitales.cod_hospi desc;

18. Realizar una consulta en la que se muestre por cada hospital el nombre de las especialidades que tiene. select nombre,especialidad from hospitales,medicos where hospitales.cod_hospi=medicos.cod_hospi; 19. Realizar una consulta en la que aparezca por cada hospital y en cada especialidad el nmero de mdicos (tendrs que partir de la consulta anterior y utilizar GROUP BY). select nombre,especialidad,count(*) from hospitales,medicos where hospitales.cod_hospi=medicos.cod_hospi group by nombre,especialidad; 20. Obtener por cada hospital el nmero de empleados. select hospitales.cod_hospi,nombre,count(*) from personas,hospitales where personas.cod_hospital=hospitales.cod_hospi group by personas.cod_hospital; 21. Obtener por cada especialidad el nmero de trabajadores. select especialidad,count(*) from medicos group by especialidad; 22. Visualizar la especialidad que tenga ms mdicos. Create view nummedporesp as select count(*) as num from medicos group by especialidad; select especialidad from medicos group by especialidad having count(*)=(select max(num) from nummedporesp); 23. Cul es el nombre del hospital que tiene mayor nmero de plazas? Select nombre from hospitales where nplazas =(select max(nplazas) from hospitales); 24. Visualizar las diferentes estanteras de la tabla ordenados descendentemente por estantera. select distinct(estanteria) from herramientas order by estanteria desc; HERRAMIENTAS

25. Averiguar cuntas unidades tiene cada estantera. select estanteria,sum(unidades) from herramientas group by estanteria; 26. Visualizar las estanteras que tengan ms de 15 unidades. select estanteria, sum(unidades) from herramientas group by estanteria having sum(unidades)>15; 27. Cul es la estantera que tiene ms unidades? Create view numunidporest as select sum(unidades) as num from herramientas group by estanteria; select estanteria from herramientas group by estanteria having sum(unidades)=(select max(num) from numunidporest); 28. A partir de las tablas EMPLE y DEPART departamento que no tiene ningn empleado. Select * from depart where dept_no not in (select dept_no from emple); 29. Mostrar el nmero de empleados de cada departamento. En la salida se debe mostrar tambin los departamentos que no tienen ningn empleado. select depart.dept_no,count(emple.emp_no) from emple right outer join depart on (emple.dept_no=depart.dept_no) group by depart.dept_no; 30. Obtener la suma de salarios de cada departamento, mostrando las columnas DEPT_NO, SUMA DE SALARIOS y DNOMBRE. En el resultado tambin se deben mostrar los departamentos que no tienen asignados Empleados. select depart.dept_no, sum(salario) "Suma salario", dnombre from emple RIGHT OUTER JOIN depart ON emple.dept_no=depart.dept_no group by depart.dept_no; 31. Utilizar la funcin IFNULL en la consulta anterior para que en el caso de que un departamento no tenga empleados, aparezca como suma de salarios el valor 0. select depart.dept_no, IFNULL(sum(salario),0) "Suma salario", dnombre from emple RIGHT OUTER JOIN depart ON emple.dept_no=depart.dept_no group by depart.dept_no; mostrar los datos del

32. Obtener el nmero de mdicos que pertenecen a cada hospital, mostrando las columnas COD_HOSPITAL, NOMBRE y NMERO DE MDICOS. En el resultado deben aparecer tambin los datos de los hospitales que no tienen mdicos. Select hospitales.cod_hospi, nombre, count(medicos.dni) from hospitales left outer join medicos on medicos.cod_hospi = hospitales.cod_hospi group by hospitales.cod_hospi, nombre;

También podría gustarte