--1. Actualizar el precio unitario de los productos de la categoría CARNICOS, subiéndolos en un 10%
update productos
set preciounit=preciounit*1.10
where categoriaid=(select categoriaid from categorias
where nombrecat ='CARNICOS');
--2. Actualizar el teléfono celular del proveedor cuyo contacto es MANUEL ANDRADE, con el valor 099010291
update proveedores
set celuprov = '099010291'
where contacto='MANUEL ANDRADE';
--3. Borrar el producto YOGURT DE SABORES
DELETE from productos
where descripcion = 'YOGURT DE SABORES';
--4. Realizar las siguientes consultas:
-- 4.1 Mostrar todas las órdenes: el id de la orden, el apellido y nombre del empleado que la atendió, el nombre de la compañía cliente y la fecha de orden
select * from ORDENES
select * from EMPLEADOS
select * from CLIENTES
select ORDENID, APELLIDO, NOMBRE, NOMBRECIA, FECHAORDEN
from ordenes o join EMPLEADOS e
on (o.EMPLEADOID=e.EMPLEADOID)
join CLIENTES c
on (o.CLIENTEID= c.CLIENTEID);
--4.2 Mostrar la suma total de cada tipo de producto pedidos en todas las órdenes.
select * from detalle_ordenes
select productoid, sum (cantidad) from detalle_ordenes
group by productoid ;
--4.3 Mostrar el número de órdenes atendidas por cada empleado, incluidos los que tienen 0 órdenes.
select nombre, apellido, count (o.empleadoid) from empleados e left join ordenes o
on e.empleadoid= o.empleadoid
group by nombre, apellido; 4.4 Muestre los proveedores y la suma de dinero vendido en los productos de ese proveedor.
--4.4 Muestre los proveedores y la suma de dinero vendido en los productos de ese proveedor.
select prov.nombreprov,sum(d.cantidad * pro.preciounit )
from proveedores prov, productos pro, detalle_ordenes d
where d.productoid= pro.productoid and prov.proveedorid= pro.proveedorid
group by nombreprov;
--5. Realizar el siguiente procedimiento almacenado.
--5.1 Escriba un procedimiento almacenado que reciba como parámetro un código de proveedor y devuelve el número de órdenes en las que están incluidos productos de ese proveedor.
create or replace procedure num_ordenes(idproo in number,num out number)
as begin
select count(p.productoid) into num from productos p join detalle_ordenes dor
on (p.productoid=dor.productoid)join ordenes ord on(ord.ordenid=dor.ordenid)
where proveedorid=idproo
group by proveedorid;
end;
/
set serveroutput on
declare num number;
begin
num_ordenes(10, num);
dbms_output.put_line('Numero de ordenes: ' ||num);
end;
--5.2 Escriba un procedimiento almacenado que reciba como parámetro un nombre de una categoría y devuelve el código del producto de esa categoría que tiene más unidades vendidas.
select * from categorias
select * from productos
select * from detalle_ordenes
create or replace procedure mas_vendido(nomCat in varchar2(40),cod_prod out number )
as
begin
select max(sum(cantidad))into cod_prod from productos p join categorias c on
(c.categoriaid=p.categoriaid)
join detalle_ordenes dor on (p.productoid=dor.productoid)
where c.nombrecat=nomCat
group by p.productoid;
end;
/
declare num number;
begin
mas_vendido('CARNICOS',num);
dbms_output.put_line('Mas vendido: ' || num);
end;
Link para descargar Script:
Resolucion Ejercicios Planteados