1- Partiendo de la tabla EMPLE, visualiza por cada oficio de los empleados deldepartamento 'VENTAS' la suma de salarios.
SELECT DEPT_NO, OFICIO, SUM (SALARIO)"Suma salarios"FROM EMPLEWHERE DEPT_NO= (SELECT DEPT_NO FROM DEPART WHERE DNOMBRE='VENTAS')GROUP BY DEPT_NO, OFICIO ORDER BY SUM (SALARIO); 2- Selecciona aquellos apellidos de la tabla EMPLE cuyo salario sea igual a lamedia del salario en su departamento. SELECT APELLIDOFROM EMPLE E1WHERE SALARIO=(SELECT AVG(SALARIO) FROM EMPLE E2 WHERE E2.DEPT_NO =E1.DEPT_NO GROUP BY DEPT_NO); 3- A partir de la tabla EMPLE, visualiza el nmero de empleados de cadadepartamento cuyo oficio sea 'EMPLEADO'. SELECT DEPT_NO "Departamento", COUNT (*) "Empleados con Oficio EMPLEADO"FROM EMPLEWHERE OFICIO='EMPLEADO'GROUP BY DEPT_NO; 4-Desde la tabla EMPLE, visualiza el departamento que tenga mas empleadoscuyo oficio sea'EMPLEADO'. SELECT DEPT_NO "Departamento", COUNT (*) "Empleados con Oficio EMPLEADO"FROM EMPLEWHERE OFICIO='EMPLEADO'GROUP BY DEPT_NOHAVING COUNT(*)=(SELECT MAX (COUNT(*)) FROM EMPLE WHEREOFICIO='EMPLEADO' GROUP BY DEPT_NO ); 5.- A partir de las tablas EMPLE y DEPART, visualiza el numero dedepartamento y el nombrede departamento que tenga mas empleados cuyo oficio sea 'EMPLEADO'. SELECT DNOMBRE "Nombre Departamento", E.DEPT_NO "Departamento", COUNT(*)"Empleados con Oficio EMPLEADO"FROM EMPLE E, DEPART DWHERE E.DEPT_NO=D.DEPT_NO AND OFICIO='EMPLEADO'GROUP BY E.DEPT_NO, DNOMBREHAVING COUNT(*)=(SELECT MAX (COUNT(*)) FROM EMPLE WHEREOFICIO='EMPLEADO' GROUP BY DEPT_NO );
6.- Busca los departamento que tienen mas de dos personas trabajando en lamisma profesin. SELECT DNOMBREFROM DEPARTWHERE DEPT_NO=(SELECT DISTINCT (DEPT_NO) FROM EMPLE GROUP BY EMPLE.DEPT_NO, OFICIO HAVING COUNT(*)>2); 7- Visualizar los nombres de los alumnos de la tabla ALUM que aparezcan enalguna de estas tablas: NUEVOS y ANTIGUOS. select nombre from alum intersect (select nombre from nuevos union select nombrefrom antiguos); 8- Escribir las distintas formas en que se puede poner la consulta anterior llegando al mismo resultado *select nombre from alum where nombre in(select nombre from nuevo) union selectnombre from antiguo);*select nombre from alum where nombre in (select nombre from nuevo) or nombrein (select nombre from antiguo); 9) Visualizar los nombres de los alumnos de la tabla alum que aparezcan enestas dos tablas: antiguos y nuevos select nombre from alum intersect select nombre from antiguos intersect selectnombre from nuevos; Tablas ALUM, ANTIGUOS Y NUEVOS 10.- Realiza una consulta en la que aparezca por cada centro y en cadaespecialidad el numero de profesores. Si el centro no tiene profesores, debeaparecer un 0 en la columna de numero de profesores. Las columnas avisualizar son: nombre de centro, especialidad y numero de profesores. SELECT NOMBRE "Centro", ESPECIALIDAD "Especialidad", COUNT(DNI)"Profesores"FROM CENTROS C, PROFESORES PWHERE C.COD_CENTRO =P.COD_CENTRO (+)GROUP BY NOMBRE, ESPECIALIDAD ORDER BY COUNT (DNI) DESC; 11.- Obtn por cada centro el numero de empleados. Si el centro carece deempleados, ha deaparecer un 0 como numero de empleados. SELECT NOMBRE "Centro", COUNT (DNI)"Profesores"FROM CENTROS C, PERSONAL PWHERE C.COD_CENTRO =P.COD_CENTRO (+)GROUP BY NOMBRE ORDER BY COUNT (DNI) DESC;
12.- Obtener la especialidad con menos profesores. SELECT ESPECIALIDADFROM PROFESORESGROUP BY ESPECIALIDADHAVING COUNT (*) = (SELECT MIN (COUNT (*)) FROM PROFESORES GROUP BY ESPECIALIDAD); Tablas BANCOS, SUCURSALES, CUENTAS y MOVIMIENTOS 13.- Obtn el banco con ms sucursales. Los datos a obtener son:Nombre de Banco NSucursales xxxxx xxx SELECT NOMBRE_BANC "BANCO", COUNT (*) "Sucursales"FROM BANCOS B, SUCURSALES SWHERE B.COD_BANCO=S.COD_BANCOGROUP BY NOMBRE_BANCHAVING COUNT (*) = (SELECT MAX (COUNT(*)) FROM BANCOS B, SUCURSALES SWHERE B.COD_BANCO=S.COD_BANCO GROUP BY NOMBRE_BANC); 14.- El saldo actual de los bancos de 'GUADALAJARA', 1 fila por cada banco.Nombre de Banco, Saldo Debe, Saldo Haber SELECT B.NOMBRE_BANC "Nombre Banco", SUM (SALDO_DEBE) "Saldo Debe", SUM(SALDO_HABER) "Saldo Haber"FROM BANCOS B, CUENTAS CWHERE B.COD_BANCO = C.COD_BANCO AND POBLACION = 'GUADALAJARA'GROUP BY B.NOMBRE_BANC; 15.- Datos de la cuenta o cuentas con ms movimientos.Nombre, Cta Nmovimientos SELECT M.NUM_CTA "Numero Cta", NOMBRE_CTA "NOMBRE Cta", COUNT(*) "NMovimientos" FROM MOVIMIENTOS M, CUENTASC WHERE M.NUM_CTA=C.NUM_CTA AND C.COD_SUCUR=M.COD_SUCUR AND C.COD_BANCO=M.COD_BANCO GROUP BY M.NUM_CTA, NOMBRE_CTA HAVING COUNT(*)=(SELECT MAX (COUNT (*)) FROM MOVIMIENTOS GROUP BY NUM_CTA); 16.- El nombre de la sucursal que haya tenido ms suma de reintegros.Nombre Sucursal Suma Reintegros SELECT S.NOMBRE_SUC, SUM (IMPORTE) "Suma Reintegros" FROM SUCURSALES S, MOVIMIENTOS M WHERE S.COD_BANCO = M. COD_BANCO AND S.COD_SUCUR = M. COD_SUCUR andM.TIPO_MOV = 'R' GROUP BY NOMBRE_SUC HAVING SUM(IMPORTE) = (SELECT MAX( SUM (IMPORTE)) FROM MOVIMIENTOS M WHERE M.TIPO_MOV = 'R'GROUP BY COD_BANCO, COD_SUCUR);