/*
EJERCICIOS
PROPUESTOS
***********************************************************************
EJERCICIOS
************************************************************************
1. Actualizar el precio unitario de los productos de la categoría CARNICOS, subiéndolos en un 10% (1)
*/
select * from productos;
update productos
set preciounit= (preciounit*0.1) + preciounit;
/*
2. Actualizar el teléfono celular del proveedor cuyo contacto es MANUEL ANDRADE, con el valor 099010291 (2)
*/
select * from proveedores;
update proveedores
set celuprov= '0990101291'
where contacto= 'MANUEL ANDRADE';
/*
3. Borrar el producto YOGURT DE SABORES (3)
*/
select * from productos;
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ó (4)
el nombre de la compañía cliente y la fecha de orden
*/
SELECT * FROM ORDENES;
select * from empleados;
select * from clientes;
select ord.ordenid, emp.empleadoid, emp.nombre, emp.apellido,ord.fechaorden, cli.clienteid, cli.nombrecia
from ordenes ord, empleados emp, clientes cli
where ord.empleadoid=emp.empleadoid andord.clienteid=cli.clienteid ;
/*
4.2 Mostrar la suma total de cada tipo de producto pedidos en todas las órdenes. (5)
*/
select * from detalle_ordenes;
select productoid, sum(cantidad) as "Suma total"
from detalle_ordenes
group by productoid;
/*
4.3 Mostrar el número de órdenes atendidas por cada empleado, incluidos los que tienen 0 órdenes. (6)
*/
select * from empleados;
select * from ordenes;
select nombre as "Nombre" , apellido as "Apellido", count(ord.empleadoid) as "# de ordenes"
from empleados emp
left join ordenes ord
on emp.empleadoid= ord.empleadoid
group by nombre, apellido;
/*
4.4 Muestre los proveedores y la suma de dinero vendido en los productos de ese proveedor. (7)
*/
select * from proveedores;
select * from productos;
select * from detalle_ordenes;
select prov.nombreprov as "Nombre",sum(d.cantidad *prod.preciounit ) as "Suma dinero"
from proveedores prov, productos prod, detalle_ordenes d
where d.productoid= prod.productoid and prov.proveedorid=prod.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 (8)
devuelve el número de órdenes en las que están incluidos productos de ese proveedor.
*/
DROP LANGUAGE IF EXISTS plpgsql;
CREATE LANGUAGE plpgsql;
select * from productos;
select * from ordenes;
select * from detalle_ordenes;
create or replace function num_ordene_proveedor(idproo int)returns integer
as $$
declare
num int;
begin
select count(p.productoid) into num from productos pjoin detalle_ordenes dor
on (p.productoid=dor.productoid)join ordenes ordon(ord.ordenid=dor.ordenid)
where proveedorid=idproo
group by proveedorid;
return num;
end;
$$ LANGUAGE plpgsql;
select num_ordene_proveedor(10)
/*
5.2 Escriba un procedimiento almacenado que reciba como parámetro un nombre de una categoría y (9)
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 function mas_vendido (nomCat character(50))returns integer
as $$
declare
num int;
begin
select p.productoid,sum(cantidad)INTO NUM fromproductos p join categorias c on (c.categoriaid=p.categoriaid)
join detalle_ordenes dor on(p.productoid=dor.productoid)
where c.nombrecat=nomCat
group by descripcion, p.productoid
order by sum DESC
limit 1;
return num;
end;
$$LANGUAGE 'plpgsql';
select mas_vendido('CARNICOS')
No hay comentarios:
Publicar un comentario