Tarea Bases 2 PL/SQL
Short Description
Descripción: la creacion de una base de datos junto con su lenguaje DLL y sus respectivas Consultas...
Description
--obtener el total de compras realizadas de cigarrillos de color negro SELECT SUM(c_comprada), marca, filtro, color, clase, mentol FROM Compras WHERE color = 'N' GROUP BY marca, filtro, color, clase, mentol ORDER BY 1; --obtener aquellos cigarrillos para los cuales existen pedidos de cantidad --superior a la media de los pedidos encontrados SELECT *FROM Compras WHERE c_comprada > (SELECT AVG (c_comprada) FROM Compras); --obtener una relación completa de todas las compras y ventas de Cigarrillos SELECT *FROM Compras UNION SELECT *FROM Ventas --Obtener la relación de cigarros que han sido abastecidos a los estancos para los cuales no se han realizado ninguna venta SELECT marca, filtro, color, clase, clase, mentol mentol FROM Compras Compras WHERE (marca, filtro ,color ,clase, mentol) NOT IN (SELECT DISTINCT marca, filtro, color, clase, mentol FROM Ventas); --Obtener la relación de cigarrillos que han sido abastecidos a los estancos y de los cuales se han realizado alguna venta SELECT marca, filtro, color, clase, clase, mentol mentol FROM Compras Compras WHERE (marca, filtro ,color ,clase, mentol) IN (SELECT DISTINCT marca, filtro, color, clase, mentol FROM Ventas); --Obtener la relación de estancos que no han vendido el cigarrillos de marca 'Duca dos', con filtro de color negro sin mentol y clase normal SELECT *FROM Estancos WHERE nif_estancos NOT IN (SELECT nif_estancos FROM Ventas WHERE (marca = 'Ducados' AND color = 'N' AND fi ltro = 'S' AND mentol = 'S' AND clase = 'Normal')); --Obtener la relacion de gabricantes de los cuales se ha vendido algun cigarro Select *FROM Fabricantes WHERE nombre_fabricante IN (SELECT DISTINCT nombre_fabricante FROM Manufactura WHERE marca IN (SELECT DISTINCT marca FROM Cigarrillos WHERE EXISTS (SELECT *FROM Ventas WHERE Cigarrillos.marca = Ventas.ma rca Cigarrillos.filtro = Ventas.f iltro Cigarrillos.color = Ventas.co lor Cigarrillos.clase = Ventas.cl ase Cigarrillos.mentol = Ventas.m entol))); --Insertar una nueva marca de cigarrillos producida por un fabricante no existen te en la BD INSERT INTO Fabricantes VALUES ('Cohiba S.A.','España'); INSERT INTO Manufactura VALUES ('Cohiba','Cohiba S.A.', '10', '20'); INSERT INTO Cigarrillos VALUES ('Cohiba', 'N', 'R', 'Normal', 'N', 1.1, 15, 2); --Dar de alta un nuevo estanco y abastecerlo con 10 unidades de cada uno de los cigarrillos existentes en la base de datos INSERT INTO Estancos VALUES ('3030404000-K', 3444, 28012, 'El Fumador Loco', 'C/
La Hoja, 17', 'Madrid', 'Madrid' ); INSERT INTO Almacenes (SELECT '30304000-K', marca, filtro, color, clase, mentol, 10 FROM Cigarrillos); INSERT INTO Compras (SELECT '30304000-K', marca, filtro, color, clase, mentol, S YSDATE, 10, precio_costo FROM Cigarrillos); INSERT INTO Ventanas (SELECT DISTINCT Estancos.nif_estanco, Cigarrillos.marca, C igarrillos.color, Cigarrillos.clase, Cigarrillos.mentol, SYSDATE, 2, precio_vent a FROM Estancos, Cigarrillos WHERE provincia_ventaja = 'Sevilla' AND Cigarrillos.f iltro = 'N' AND Cigarrillos.color = 'R'); --Para Todos aquellos tabacos de los que se hayan vendido mas de cincuenta unida des en la fecha actual, realizar un pedido de compras del 50% de la cantidad ven dida INSERT INTO Compras (SELECT DISTINCT nif_estanco, Ventas.marca, Ventas.filtro, V entas.color, Ventas.clase, Ventas.mentol, SYSDATE, c_vendida*0.5, Cigarrillos.pr ecio_costo FROM Ventas, Cigarrillos WHERE Ventas.c_vendida > 50 AND Ventas.fecha_venta 20); UPDATE FABRICANTE SET PAIS = 'USA' WHERE NOMBRE_FABRICANTE IN (SELECT DISTINCT NOMBRE_FABRICANTE FROM MANUFACTURA WHERE MARCA IN (SELECT DISTINCT MARCA FROM CIGARRILLOS WHERE CLASE = 'SuperLight' AND FILTRO = 'S')); Borrado de la informacion DELETE FROM ESTANCOS WHERE LOCALIDAD_ESTANCO = 'Madrid' AND PROVINCIA_ESTANCO = 'Madrid'; DELETE FROM ESTANCOS WHERE NIF_ESTANCO IN (SELECT DISTINCT NIF_ESTANCO FROM VENTAS GROUP BY NIF_ESTANCO HAVING COUNT(*) < 500); DELETE FROM FABRICANTES WHERE NOMBRE_FABRICANTE NOT IN (SELECT DISTINCT NOMBRE_FABRICANTE FROM MANUFACTURA WHERE MARCA IN (SELECT MARCA FROM CIGARRILLOS WHERE CLASE = 'UltraLight')); DELETE FROM COMPRAS WHERE FECHA_COMPRA = SYSDATE AND (NIF_ESTANCO, MARCA, FILTRO, COLOR, CLASE, MENTOL ) NOT IN (SELECT DISTINCT (NIF_ESTANCO, MARCA, FILTRO, COLOR, CLASE, MENTOL)
FROM VENTAS WHERE FECHA_VENTA = SYSDATE); DELETE FROM ALMACENES WHERE (NIF_ESTANCO, MARCA, FILTRO, COLOR, CLASE, MENTOL) NOT IN (SELECT DISTINCT (NIF_ESTANCO, MARCA, CLASE, FILTRO, COLOR, CLASE, ME NTOL) FROM VENTAS); DELETE FROM ALMACENES A WHERE NOT EXISTS (SELECT * FROM VENTAS V WHERE A.NIF_ESTANCO = V.NIF_ESTANCO AND A.MARCA = V.MARCA AND A.FILTRO = V.FILTRO AND A.COLOR = V.COLOR AND A.CLASE = V.CLASE AND A.MENTOL = V.MENTOL);
--MODIFICAR EL PRECIO DE VENTA DE LOS CIGARRILLOS, SEGUN LA SIGUIENTE REGLA. EL PRECIO DE VENTA DEBE SER UN 20% MAYOR QUE EL PRECIO DE COSTE PARA LOS CIGARRILLOS NACIONALES Y UN 30% MAYOR PARA LOS EXTRANJEROS DECLARE CURSOR nuevo_precio IS SELECT Cigarrillos.marca, Cigarrillos.precio_costo, Fabricantes.pais, Cigarrillos.filtro, Cigarrillos.color, Cigarrillos.clase, Cigarrillos.mentol FROM Cigarrillos, Fabricantes, Manufactura WHERE Manufactura.nombre_fabricante = Fabricantes.nombre_fabricante AN D Cigarrillos.marca = manufactura.marca; BEGIN FOR precio_record IN nuevo_precio LOOP IF precio_record.pais = 'España' THEN ELSE incremente_costo := 0.2; END IF UPDATE Cigarrillos SET precio_venta = precio_record.precio_costo + (incremento_cost o * precio_record.precio_costo) WHERE Cigarrillos.marca = precio_record.marca AND Cigarrillos.filtro = precio_record.filtro AND Cigarrillos.color = precio_record.color AND Cigarrillos.clase = precio_record.clase AND Cigarrillos.mentol = precio_record.mentol; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; END;
View more...
Comments