Está en la página 1de 7

EJERCICIOS SQL BASES DE DATOS

ACTIVIDADES COMPLEMENTARIAS TEMA 3


Tablas EMPLE y DEPART 1) Selecciona el apellido, oficio y localidad de los empleados cuyo oficio sea analista SELECT APELLIDO, OFICIO, LOC FROM EMPLE, DEPART WHERE OFICIO='ANALISTA'; 2) Obtn los datos de los empleados cuyo director sea Cerezo SELECT * FROM EMPLE WHERE DIR= (SELECT EMP_NO FROM EMPLE WHERE OFICIO='DIRECTOR' AND APELLIDO= 'CEREZO'); 3) Obtn los datos de los empleados del departamento Ventas SELECT * FROM EMPLE WHERE DEPT_NO=(SELECT DEPT_NO FROM DEPART WHERE NOMBRE='VENTAS'); 4) Obtn los datos de los departamentos que no tengan empleados SELECT * FROM DEPART WHERE DEPT_NO NOT IN (SELECT DISTINCT DEPT_NO FROM EMPLE); 5) Obtn los datos de los departamentos que tengan empleados SELECT * FROM DEPART WHERE EXISTS (SELECT * FROM EMPLE, DEPART WHERE EMPLE.DEPT_NO=DEPART.DEPT_NO); 6) Obtn el apellido y el salario de los empleados que superen el salario de del departamento 20 SELECT APELLIDO, SALARIO FROM EMPLE WHERE SALARIO> (SELECT MAX (SALARIO) FROM EMPLE WHERE DEPT_NO=20) Tabla LIBRERIA 7) Visualiza el tema, estante y ejemplares de las filas de LIBRERIA con ejemplares comprendidos entre 8 y 15. SELECT * FROM LIBRERIA WHERE EJEMPLARES BETWEEN 8 AND 15 8) Visualiza las columnas tema, estante y ejemplares de las filas cuyo estante no este comprendido entre la B y la D. SELECT TEMA, ESTANTE, EJEMPLARES FROM LIBRERIA WHERE ESTANTE NOT BETWEEN 'B' AND 'D'; 9) Visualiza todos los temas de LIBRERIA cuyo nmero de ejemplares sea inferior a los que hay en medicina. SELECT TEMA FROM LIBRERA WHERE EJEMPLARES < (SELECT EJEMPLARES FROM LIBRERIA WHERE TEMA ='MEDICINA'); 10) Visualiza los temas de LIBRERIA cuyo nmero de ejemplares no este entre 15 y 20, ambos incluidos. SELECT TEMA FROM LIBRERIA WHERE EJEMPLARES NOT BETWEEN 15 AND 20 Tablas ALUMNOS, ASIGNATURAS y NOTAS 11) Visualiza todas las asignaturas que contengan tres letras 'o' en su interior y tengan alumnos matriculados en Madrid. SELECT * FROM ASIGNATURAS WHERE NOMBRE LIKE '%O%' AND COD IN (SELECT COD FROM NOTAS WHERE DNI IN (SELECT DNI FROM ALUMNOS WHERE POBLA='Madrid')); 12) Visualiza los nombres de los alumnos de Madrid que tengan alguna asignatura suspensa. SELECT APENOM FROM ALUMNOS WHERE POBLA='Madrid' AND DNI IN (SELECT DNI FROM NOTAS WHERE NOTA<5); 13) Muestra los nombres de alumnos que tengan la misma nota que tiene 'Diaz Fernandez, Maria' en 'FOL' en alguna asignatura. SELECT APENOM FROM ALUMNOS, NOTAS WHERE NOTA IN (SELECT NOTA FROM NOTAS WHERE COD IN (SELECT COD FROM ASIGNATURAS WHERE NOMBRE='FOL') AND DNI IN (SELECT DNI FROM ALUMNOS WHERE APENOM='Daz Fernndez, Mara') AND ALUMNOS.DNI=NOTAS.DNI); 14) Obtn los datos de las asignaturas que no tengan alumnos. SELECT*FROM ASIGNATURAS WHERE COD NOT IN (SELECT COD FROM NOTAS); 15) Obtn el nombre de los alumnos que tengan nota en la asignatura con cdigo 1. SELECT APENOM FROM ALUMNOS, NOTAS WHERE ALUMNOS.DNI=NOTAS.DNI AND COD=1; 16) Obtn el nombre de los alumnos que no tengan nota en la asignatura con cdigo 1. SELECT UNIQUE APENOM FROM ALUMNOS WHERE DNI NOT IN (SELECT DNI FROM NOTAS WHERE COD=1);

ACTIVIDADES COMPLEMENTARIAS TEMA 4


1. Dada la tabla EMPLE, obtn el sueldo medio, el nmero de comisiones no nulas, el mximo sueldo y el mnimo sueldo de los empleados del departamento 30. Emplea el formato adecuado para la salida para las cantidades numricas. SELECT AVG(salario), count(comision), max(salario), min(salario) FROM emple where dept_no=30; select round(((sum(salario)+sum(comision))/count(*)),-1) "MEDIA_DE_SUELDO", count(comision) "COMISIONES NO NULAS", max (salario) "SALARIO MAXIMO", min(salario) "SALARIO MINIMO" from emple where DEPT_NO=30 ; select to_char(avg(salario),'09G999D99') "MEDIA_DE_SUELDO2", count(comision) "COMISIONES NO NULAS", max (salario) "SALARIO MAXIMO", min(salario) "SALARIO MINIMO" from emple where DEPT_NO=30 2. Visualiza los temas con mayor nmero de ejemplares de la tabla LIBRERIA y que tengan, al menos, una 'E' (pueden ser un tema o varios). select tema "TEMAS CON MAS EJEMPLARES" from libreria where libreria.tema like '%E%'; select tema "TEMAS CON MAS EJEMPLARES" from libreria where libreria.tema like '%E%' and ejemplares=(select max(ejemplares) from libreria where libreria.tema like '%E%'); 3. Dada la tabla MISTEXTOS, qu sentencia SELECT se debe ejecutar para tener este resultado? RESULTADO METODOLOGA DE LA PROGRAMACI_^_^_^_^_ INFORMTICA BSICA^_^_^_^_^_^_^_^_^_^_ SISTEMAS OPERATIVOS_^_^_^_^_^_^_^_^_^_ SISTEMAS DIGITALES^_^_^_^_^_^_^_^_^_^_ MANUAL DE C_^_^_^_^_^_^_^_^_^_^_^_^_^_*/ select rpad(rtrim(ltrim(titulo, '"'), '."'),38, '_^') from mistextos select rpad(rpad(rtrim(ltrim(titulo, '"'), '."'), length(rtrim(ltrim(titulo, '"'), '."'))+mod(length(rtrim(ltrim(titulo, '"'), '."')),2), '^'), 39, '_^') "Titulos" from mistextos 4.Visualiza los ttulos de la tabla MISTEXTOS sin los caracteres punto y comillas, y en minscula, de dos formas conocidas. select * from mixtextos select lower(rtrim(ltrim(titulo, '"'), '."')) from mistextos select translate(lower(titulo),'a".','a') from mistextos; select lower(replace(replace(titulo,'.',''),'"','')) FROM mistextos; 5. Dada la tabla LIBROS, escribe la sentencia SELECT que visualice dos columnas, una con el AUTOR y otra con el apellido del autor. select * from libros select rtrim(substr(autor,1,instr(autor, ',')), ',') as APELLIDO , autor from libros select substr(autor,1,instr(autor, ',')-1) as APELLIDO , autor from libros 6. Escribe la sentencia SELECT que visualice las columna de AUTOR y otra columna con el nombre del autor (sin el apellido) de la tabla LIBROS. select autor, rtrim(substr(autor,1,instr(autor, ',')), ',') as APELLIDO from libros select autor, substr(autor,instr(autor, ',')+2) as APELLIDO from libros 7. A partir de la tabla LIBROS, realiza una sentencia SELECT que visualice en una columna, primero el nombre del autor y, luego, su apellido. select concat(rtrim(substr(autor,1,instr(autor, ',')), ','), rtrim(substr(autor,instr(autor, ',')), ','))as NOMBRE from libros 8. A partir de la tabla LIBROS, realiza una sentencia SELECT para que aparezcan los ttulos ordenados por su nmero de caracteres. select titulo from libros order by length(titulo) 9. Dada la tabla NACIMIENTOS, realiza una sentencia SELECT que obtenga la siguiente salida: NOMBRE, FECHANAC, FECHA_FORMATEADA, donde FECHA_FORMATEADA tiene el siguieten formato: "Naci el 12 de mayo de 1982". select nombre, fechanac, 'Naci el ' || to_char(fechanac, 'DD') || ' de ' || rtrim(to_char(fechanac, 'MONTH')) || ' de ' || to_char(fechanac, ' YYYY ') from nacimientos; select nombre, fechanac, to_char(fechanac, '"Naci el "DD" de "MONTH" de "YYYY') from nacimientos;

10. Dada la tabla LIBRERIA, haz una sentencia SELECT que visualice el tema, el ltimo carcter del tema que no sea blanco y el nmero de caracteres de tema(sin contar los blancos de la derecha) ordenados por tema. select rtrim(tema,' ') , length(rtrim(tema,' ')) from libreria; select tema,substr(rtrim(tema,' '),length(rtrim(tema,' '))) , length(rtrim(tema,' ')) from libreria; 11. A partir de la tabla NACIMIENTOS, visualiza en una columna el NOMBRE seguido de su fecha de nacimiento formateada (quita blancos del nombre). select length(rtrim(nombre,' ')) as PruebaEspacios, rtrim(nombre,' ') || ' ' || ( 'Naci el ' || to_char(fechanac, 'DD') || ' de ' || lower(to_char(fechanac, 'MONTH')) || 'de ' || to_char(fechanac, 'YYYY') || '.' ) as nombre_y_fecha_formateada from nacimientos; 12. Convierte la cadena '010712' a fecha y visualiza su nombre de mes en maysculas. select to_char(to_date('010712','DDMMYY'),'MONTH') as fecha from dual; 13. Visualiza aquellos temas de la tabla LIBRERIA cuyos ejemplares sean 7 con el nombre de tema de 'SEVEN'; el resto de temas que no tengan 7 ejemplares se visualizarn como estn. select tema, decode(ejemplares,7,'SEVEN', ejemplares) from libreria; 14. A partir de la tabla EMPLE, obtn el apellido de los empleados que lleven ms de 15 aos trabajando. select APELLIDO,(to_char(current_date,'YYYY') - to_char(fecha_alt,'YYYY')) FROM EMPLE WHERE(to_char(current_date,'YYYY') - to_char(fecha_alt,'YYYY'))>15; select APELLIDO from EMPLE where (to_char (current_date,'YYYY') - to_char (fecha_alt,'YYYY') )> 15; select APELLIDO FROM EMPLE WHERE months_between(sysdate,emple.fecha_alt)>(15*12); 15. Selecciona el apellido de los empleados de la tabla EMPLE que lleven ms de 16 aos trabajando en el departamento 'VENTAS'. select APELLIDO,(to_char(current_date,'YYYY') - to_char(fecha_alt,'YYYY')) FROM EMPLE WHERE(to_char(current_date,'YYYY') - to_char(fecha_alt,'YYYY'))>16 AND EMPLE.DEPT_NO=(SELECT DEPT_NO FROM DEPART WHERE DNOMBRE='VENTAS'); select APELLIDO FROM EMPLE, depart WHERE months_between(sysdate,emple.fecha_alt)>(16*12) and emple.dept_no=depart.dept_no and dnombre='VENTAS' 16. Visualiza el apellido, el salario y el nmero de departamento de aquellos empleados de la tabla EMPLE cuyo salario sea el mayor de su departamento. SELECT apellido, salario, dept_no as numero_departamento from emple e where salario=(select max(salario) from emple where emple.dept_no=e.dept_no) order by dept_no; 17. Visualiza el apellido, el salario y el nmero de departamento de aquellos empledados de la tabla EMPLE cuyo salario supere a la media en su departamento. SELECT apellido, salario, dept_no as numero_departamento from emple e where salario>(select avg(salario) from emple where emple.dept_no=e.dept_no) order by dept_no;

ACTIVIDADES COMPLEMENTARIAS TEMA 5


Tablas EMPLE y DEPART 1) Partiendo de la tabla EMPLE, visualizar por cada oficio de los empleados del departamento 'VENTAS' la suma de salarios. select sum(salario), oficio from emple where dept_no in (select dept_no from depart where dnombre like 'VENTAS') group by oficio; 2) seleccionar aquellos pedidos de la tabla EMPLE cuyo salario sea igual a la media de su salario en su departamento. select apellido, salario from emple where (salario,dept_no) in (select avg(salario),dept_no from emple group by dept_no); 3) A partir de la tabla emple, visualizar el numero de empleados de cada departamento cuyo oficio sea 'EMPLEADO' select dept_no,count(*) from emple where oficio like 'EMPLEADO' group by dept_no; 4) Desde la tabla EMPLE, visualizar el departamento que tenga ms empleados cuyo oficio sea 'EMPLEADO' select dept_no, count(*) from emple where oficio like 'EMPLEADO' group by dept_no having count(*)=(select max(count(*)) from emple where oficio like 'EMPLEADO'group by dept_no); 5) A partir de las tablas EMPLE y DEPART, visualizar el nmero de departamento y el nombre de departamento que tenga ms empleados cuyo oficio sea 'EMPLEADO' select dept_no,dnombre from depart where dept_no=(select dept_no from emple where oficio= 'EMPLEADO' group by dept_no having count(*)=(select max(count(*)) from emple where oficio='EMPLEADO' group by dept_no)); 6) Buscar los departamentos que tienen ms de dos personas trabajando en la misma profesin select dept_no,count(*) from emple group by dept_no,oficio having count(*)>2;

Tablas ALUMNOS, ANTIGUOS y NUEVOS 7) Visualizar los nombres de los alumnos de la tabla ALUM que aparezcan en alguna de estas tablas: NUEVOS y ANTIGUOS. select nombre from alum intersect (select nombre from nuevos union select nombre from 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 select nombre from antiguo); select nombre from alum where nombre in (select nombre from nuevo) or nombre in (select nombre from antiguo); 9) Visualizar aquellos nombres de la tabla ALUM que no esten en la tabla ANTIGUOS ni en la tabla NUEVOS select nombre from alum minus select nombre from antiguos minus select nombre from nuevos;

Tablas PERSONAL, PROFESORES Y CENTROS 10) Realizar una consulta en la que aparezca por cada centro y en cada especialidad el numero de profesores. Si el centro no tiene profesores debe aparecer un 0 en la columna de profesores. select nombre,especialidad,count(*) from centros,profesores group by cod_centro,especialidad; select nombre,especialidad,count(dni) from centros,profesores group by cod_centro having (centros.cod_centro = profesores.cod_centro); 12) Obtener la especialidad con menos empleados select especialidad from profesores where apellidos = (select min(apellidos) from profesores);

ACTIVIDADES COMPLEMENTARIAS TEMA 6


Tablas PERSONAL, PROFESORES y CENTROS 1) Modifica el numero de plazas con un valor igual a la mitad en aquellos centros con menos de dos profesores update centros set num_plazas = num_plazas/2 where cod_centro in (select cod_centro from profesores group by cod_centro having count(*)<2); 2) Eliminar los centros que no tengan personal. delete centros where cod_centro in (select cod_centro from centros minus select cod_centro from personal); 3) Aadir un nuevo profesor en el centro o en los centros cuyo nmero de administrativos sea 1 en la especialidad de 'IDIOMA', con DNI 8790055 y de nombre 'Clara Salas'. insert into profesores select distinct cod_centro, 8790055,'Salas,Clara','IDIOMA' from personal where cod_centro in (select cod_centro from personal where funcion = 'ADMINISTRATIVO' group by cod_centro having count(*) = 1); 4) Borrar al personal que est en centros de menos de 300 plazas y con menos de dos profesores. delete personal where cod_centro in (select cod_centro from centros where num_plazas<300) and cod_centro in (select cod_centro from profesores group by cod_centro having count(*)<2); 5) Borrar a los profesores que estn en la tabla PROFESORES y que no estn en la tabal PERSONAL. delete profesores where dni not in (select dni from personal);

Tablas ARTICULOS, FABRICANTES, TIENDAS, PEDIDOS Y VENTAS 6) Dar de alta un nuevo artculo de 'Primera' categora para los fabricantes de 'Francia' y abastecer con 5 unidades de ese artculo a todas las tiendas y en la fecha de hoy. insert into articulos select 'Yogur Fresa', cod_fabricante, 4, 'Primera', 120,100,190 from fabricantes where pais = 'FRANCIA'; select nif, 'Yogur Fresa', cod_fabricante, 4, 'Primera', sysdate, 5 from tiendas, fabricantes where pais like 'FRANCIA'; 7) Insertar un pedido de 20 unidades en la tienda '1111-A' con el artculo que mayor nmero de ventas haya realizado. insert into pedidos select distinct '1111-A', articulo, cod_fabricante, peso, categoria, sysdate, 20 from ventas where (articulo, cod_fabricante,peso,categoria) in (select articulo,cod_fabricante,peso,categoria from ventas group by articulo, cod_fabricante, peso, categoria having count (*) = (select max(count(*)) from ventas group by articulo, cod_fabricante, peso, categoria)); 8) Dar de alta una tienda en la provincia de 'MADRID' y abastecerla con 20 unidades de cada uno de los artculos existentes. insert into tiendas values ('1010-C', 'La Cesta', 'C/Juan Mazo 30', 'Alcala','MADRID',28809); insert into pedidos select '1010-C',articulo, cod_fabricante, peso, categoria, sysdate, 20 from articulos; 9) Dar de alta dos tiendas en la provincia de 'SEVILLA' y abastecerlas con 30 unidades de artculos de la marca 'GALLO' insert into tiendas values('4501-B','La Econmica','C\Sevillanas 130','Dos hemanas','SEVILLA',44003); insert into tiendas values('4501-B','Cometibles Peter','C\Sevillanas 130','Dos hemanas','SEVILLA',44009); insert into pedidos select nif,articulo,a.cod_fabricante,peso,categoria,sysdate,30 from tiendas,articulos a, fabricantes f where provincia='SEVILLA' and f.nombre='GALLO' and a.cod_fabricante=f.cod_fabricante; 10) Realizar una venta para todas las tiendas de 'TOLEDO' de 10 unidades en los artculos de 'Primera' categora. insert into ventas select nif,articulo,cod_fabricante,peso,categoria,sysdate,10 from tiendas ,articulos where provincia='TOLEDO' AND categoria='Primera'; 11) Para aquellos artculos de los que se hayan vendido ms de 30 unidades, realizar un pedido de 10 unidades para la tienda con NIF '5555-B' con la fecha actual. insert into pedidos select distinct '5555-B',articulo,cod_fabricante,peso,categoria,sysdate,10from ventas where (articulo,cod_fabricante,peso,categoria)in (select articulo,cod_fabricante,peso,categoria from ventas group by articulo, cod_fabricante,peso,categoria having sum(unidades_vendidas)<30); 12) Cambiar los datos de la tienda con NIF '1111-A' igualandolos a los de la tienda NIF '2222-A'. update tiendas set(nombre,direccin,poblacin,provincia,codpostal)=(select nombre,direccin,poblacin,provincia, codpostal from tiendas where pais='ITALIA'); 13) Cambiar todos los artculos de 'Primera' categoria a 'Segunda' categoria del pais 'ITALIA'. UPDATE ARTICULOS SET CATEGORIA='Segunda' WHERE CATEGORIA='Primera' AND COD_FABRICANTE = (SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS='ITALIA');

14) Modificar aquellos pedidos en los que la cantidad pedida sea superior a las existencias del artculo, asignando el 20% de las existencias a la cantidad que se ha pedido. UPDATE PEDIDOS P SET UNIDADES_PEDIDAS=(SELECT EXISTENCIAS*0.2 FROM ARTICULOS WHERE ARTICULO=P. ARTICULO AND COD_FABRICANTE=P. COD_FABRICANTE AND PESO=P. PESO AND CATEGORIA=P. CATEGORIA ) WHERE UNIDADES_PEDIDAS > (SELECT EXISTENCIAS FROM ARTICULOS WHERE ARTICULO=P. ARTICULO AND COD_FABRICANTE=P. COD_FABRICANTE AND PESO=P. PESO AND CATEGORIA=P. CATEGORIA); 15) Eliminar aquellas tiendas que no han realizado ventas. DELETE TIENDAS WHERE NIF NOT IN (SELECT DISTINCT NIF FROM VENTAS); 16) Eliminar los artculos que no hayan tenido ni compras ni ventas. DELETE ARTICULOS WHERE (ARTICULO, COD_FABRICANTE, PESO, CATEGORIA) NOT IN (SELECT DISTINCT ARTICULO, COD_FABRICANTE, PESO, CATEGORIA FROM VENTAS) AND (ARTICULO, COD_FABRICANTE, PESO, CATEGORIA) NOT IN (SELECT DISTINCT ARTICULO, COD_FABRICANTE, PESO, CATEGORIA FROM PEDIDOS); 17) Borrar los pedidos de 'Primera' categoria cuyo pais de procedencia sea 'BELGICA'. DELETE PEDIDOS WHERE (ARTICULO, COD_FABRICANTE, PESO, CATEGORIA) IN (SELECT ARTICULO, COD_FABRICANTE, PESO, CATEGORIA FROM ARTICULOS WHERE COD_FABRICANTE= (SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS ='BELGICA')) AND CATEGORIA='Primera'; 18) Borrar los pedidos que no tengan tienda. DELETE PEDIDOS WHERE NIF NOT IN (SELECT NIF FROM TIENDAS); 19) Restar uno a las unidades de los ltimos pedidos de la tienda con NIF '5555-B'. UPDATE PEDIDOS SET UNIDADES_PEDIDAS=UNIDADES_PEDIDAS-1 WHERE NIF='5555-B' AND FECHA_PEDIDO=(SELECT MAX(FECHA_PEDIDO) FROM PEDIDOS WHERE NIF='5555-B');

OTROS EJEMPLOS TEMA 6


1) Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos. insert into alum (select * from nuevos minus select * from alum); 2) Borrar de la tabla ALUM los ANTIGUOS alumnos. delete from alum where nombre in (select nombre from antiguos); 3) Insertar a un empleado de apellido 'SAAVEDRA' con nmero 2000. La fecha de alta ser la actual, el SALARIO ser el mismo salario de 'SALA' mas el 20 por 100 y el resto de datos sern los mismos que los datos de 'SALA'. insert into emple (select 2000,'SAAVEDRA',oficio,dir,SYSDATE,salario + salario*0.2,comision,dept_no from emple where apellido like 'SALA'); 4) Modificar el nmero de departamentos de 'SAAVEDRA'. El nuevo departamento ser el departamento donde hay ms empleados cuyo oficio sea 'EMPLEADO' update emple set dept_no = (select dept_no from emple where oficio like 'EMPLEADO' group by dept_no having count (*) = (select max(count(*)) from emple where oficio like 'EMPLEADO' group by dept_no)) where apellido like 'SAAVEDRA'; 5) Borrar todos los departamentos de la tabla DEPART para los cuales no existan empleados en emple. delete from depart where dept_no in (select dept_no from depart minus select dept_no from emple);

OTROS EJEMPLOS TEMA 5


1) Visualizar los departamentos en los que el salario medio es mayor o igual que la media de todos los salarios select dept_no, avg(salario) from emple group by dept_no having avg(salario) >= (select avg(salario) from emple); 2) A partir de la tabla emple, visualizar el nmero de venderores del departamentos 'VENTAS'; select count(*) from emple where dept_no = (select dept_no from depart where dnombre ='VENTAS' and oficio = 'VENDEDOR'); 3) Dada la tabla LIBRERIA, visualizar por cada estante la suma de los ejemplares. select estante, sum(ejemplares) from libreria group by estante; 4) Visualizar el estante con ms ejemplares de la tabla libreria. select estante,sum(ejemplares) from libreria group by estante having sum(ejemplares)=(select max(sum(ejemplares)) from libreria group by estante);

5) Visualizar los nombres de los alumnos de la tabla alum que aparezcan en estas dos tablas: antiguos y nuevos select nombre from alum intersect select nombre from antiguos intersect select nombre from nuevos; 6) 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 nuevos)and nombre in(select nombre from antiguos); 7) Mostrar el oficio y media de salarios de aquellos empleados cuya media de salario sea mayor que 200000 select avg(salario),oficio from emple group by oficio having avg(salario)>200000; 8) Mostrar el nombre y la comision de aquellos empleados que tengan una comision mayor que la de sanchez select apellido,comision from emple where comision > (select comision from emple where apellido like 'SNCHEZ'); 9) Mostrar el nombre salario y n de departamento de aquellos empleados que ganan el salario maximo de su departamento select apellido,salario, dept_no from emple where salario in (select max(salario) from emple group by dept_no); 10) Mostrar el nombre del departamento que tanga mas empleados cuyo oficio sea presidente select dnombre from depart group by dnombre having count(*) = (select max(count(*)) from emple where oficio like 'PRESIDENTE' group by dept_no); 11) Mostrar el numero de directores de la tabla emple que sean dep departamento produccin select count(oficio) from emple where oficio = 'DIRECTOR' and dept_no = (select dept_no from depart where dnombre = 'PRODUCCIN');

También podría gustarte