Está en la página 1de 5

1.

- Modifica el nmero 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.- Elimina los centros que no tengan personal. DELETE CENTROS WHERE COD_CENTRO NOT IN( SELECT COD_CENTRO FROM PERSONAL) 3.- Aade 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 COD_CENTRO,8790055,'Clara Salas','IDIOMA' FROM PERSONAL WHERE FUNCION='ADMINISTRATIVO' GROUP BY COD_CENTRO HAVING COUNT(*)=1 ESTO ES PARA OBTENER LOS CODIGOS DE CENTROS CON UN SOLO ADMINISTRATIVO SELECT COD_CENTRO FROM PERSONAL WHERE FUNCION='ADMINISTRATIVO' GROUP BY COD_CENTRO HAVING COUNT(*)=1 4.- Borra 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)) EL UPDATE PERMITE CAMBIAR UN DATO O CAMBIAR LOS DATOS DE UN DATO ES DECIR VACIAR UN CAMPO. 5.- Borra a los profesores que estn en la tabla PROFESORES y que no estn en la tabla PERSONAL. DELETE FROM PROFESORES WHERE DNI NOT IN (SELECT DNI FROM PERSONAL WHERE FUNCION='PROFESOR')

PARA CAMBIAR SALARIO DE PESETAS A EUROS SELECT * FROM PERSONAL UPDATE PERSONAL SET SALARIO=ROUND(SALARIO/166.386) ESTO ES PARA ELIMINAR LA FUNCION DE MARTINEZ UPDATE PERSONAL SET FUNCION=NULL WHERE APELLIDOS='Martnez Salas, Fernando' PARA CAMBIAR EL OFICIO LA PRIMERA EN MAYUSCULAS UPDATE PERSONAL SET FUNCION=INITCAP(FUNCION) ============== TABLAS ARTICULOS/TIENDAS/FABRICANTES/PEDIDOS/VENTAS 6.- Da de alta un nuevo artculo de 'Primera' categora para los fabricantes de 'FRANCIA' y abastece con 5 unidades de ese artculo a todas las tiendas y en la fecha de hoy. PRIMERO INSERTAMOS EL NUEVO ARTICULO EN LA TABLA ARTICULOS INSERT INTO ARTICULOS SELECT 'PAN',COD_FABRICANTE,5,'Primera',4,4,30 FROM FABRICANTES WHERE PAIS='FRANCIA' LUEGO INSERTAMOS EN LA TABLA PEDIDOS EL NUEVO ARTICULO INSERT INTO PEDIDOS SELECT NIF,'PAN',30,8,'Primera',SYSDATE,5 FROM TIENDAS O TAMBIEN INSERT INTO PEDIDOS SELECT NIF,'PAN',(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS='FRANCIA'),8,'Primera',SYSDATE,5 FROM TIENDAS 7.- Inserta un pedido de 20 unidades en la tienda '1111A' con el artculo que mayor nmero de ventas haya realizado. INSERT INTO PEDIDOS SELECT '1111-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20 FROM VENTAS GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA HAVING COUNT(*)=(SELECT MAX(COUNT (*)) FROM VENTAS GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) PREGUNTAR 7.INSERT INTO PEDIDOS SELECT '1111-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20 FROM VENTAS GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA HAVING SUM(UNIDADES_VENDIDAS)=(SELECT MAX(SUM(UNIDADES_VENDIDAS)) FROM VENTAS GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA)

8.- Da de alta una tienda en la provincia de 'MADRID' y abastcela con 20 unidades de cada uno de los artculos existentes. PRIMERO CREAR LA TIENDA Y LUEGO VAMOS A LLENARLO DE ARTICULOS. CREAMOS LA TIENDA INSERT INTO TIENDAS VALUES('2020-A','LA PANADERIA','C/ ALCALA 340','Madrid','MADRID',28027) AHORA VAMOS A ABASTECERLO EN PEDIDOS INSERT INTO PEDIDOS SELECT '2020-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20 FROM ARTICULOS 9.- Da de alta dos tiendas en la provincia de 'SEVILLA' y abastcelas con 30 unidades de artculos de la marca de fabricante 'GALLO'. INSERT INTO TIENDAS VALUES ( 3030-A ,'SEVILLA1','C/SEVILLA 20,'SEVILA','SEVILLA',28001) INSERT INTO TIENDAS VALUES ( 4040-A ,'SEVILLA 2','C/SEVILLA 30','SEVILA','SEVILLA',28001) INSERT INTO PEDIDOS SELECT NIF,ARTICULO,A.COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,30 FROM ARTICULOS A,TIENDAS,FABRICANTES F WHERE A.COD_FABRICANTE=F.COD_FABRICANTE AND F.NOMBRE='GALLO' AND PROVINCIA='SEVILLA' 10.-Realiza 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 ARTICULOS A,TIENDAS WHERE PROVINCIA='TOLEDO' AND CATEGORIA='Primera' 11.- Para aquellos artculos de los que se hayan vendido ms de 30 unidades, realiza 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, 10 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 SUM(UNIDADES_VENDIDAS)>30)

12.- Cambia los datos de la tienda con NIF '1111-A' igualndolos a los de la tienda con NIF '2222-A'. UPDATE TIENDAS SET (NOMBRE,DIRECCION,POBLACION,PROVINCIA,CODPOSTAL)=(SELECT NOMBRE,DIRECCION,POBLACION,PROVINCIA,CODPOSTAL FROM TIENDAS WHERE NIF='2222-A') WHERE NIF='1111-A' 13.- Cambia todos los artculos de 'Primera' categora a 'Segunda' categora del pas 'ITALIA'. UPDATE ARTICULOS SET CATEGORIA='Segunda' WHERE CATEGORIA='Primera' AND COD_FABRICANTE=(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS='ITALIA') 14.- Modifica aquellos pedidos en los que la cantidad pedida sea superior a las existencias del artculo, asignando el 20 por 100 de las existencias a la cantidad que se ha pedido. UPDATE PEDIDOS SET UNIDADES_PEDIDAS=0.2*(SELECT EXISTENCIAS FROM ARTICULOS A,PEDIDOS P WHERE A.ARTICULO=P.ARTICULO AND A.COD_FABRICANTE=P.COD_FABRICANTE AND A.PESO=P.PESO AND A.CATEGORIA=P.CATEGORIA AND EXISTENCIAS<UNIDADES_PEDIDAS) WHERE ARTICULO IN (SELECT P.ARTICULO FROM ARTICULOS A, PEDIDOS P WHERE A.ARTICULO=P.ARTICULO AND A.COD_FABRICANTE=P.COD_FABRICANTE AND A.PESO=P.PESO AND A.CATEGORIA=P.CATEGORIA AND EXISTENCIAS<UNIDADES_PEDIDAS) 15.- Elimina aquellas tiendas que no han realizado ventas. DELETE FROM TIENDAS WHERE NIF IN (SELECT NIF FROM TIENDAS WHERE NIF NOT IN (SELECT NIF FROM VENTAS)) 16.- Elimina los artculos que no hayan tenido ni compras ni ventas. DELETE FROM ARTICULOS WHERE (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) IN (SELECT ARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM ARTICULOS WHERE (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) NOT IN(SELECT ARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM PEDIDOS) AND (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) NOT IN (SELECT ARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM VENTAS))

17.- Borra los pedidos de 'Primera' categora cuyo pas de procedencia sea 'BLGICA'.

DELETE FROM PEDIDOS WHERE (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) IN (SELECT ARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM PEDIDOS WHERE CATEGORIA='Primera' AND COD_FABRICANTE=(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS='BELGICA')) 18.- Borra los pedidos que no tengan tienda. DELETE FROM PEDIDOS WHERE NIF NOT IN (SELECT NIF FROM TIENDAS) 19.-Resta 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')

También podría gustarte