lunes, 7 de mayo de 2012

Resolucion trabajo practico nro 2 bases de datos 2, (classicmodels)


El esquema de la bd:
Consignas:

Trabajo practico: Introducción a MySQL
1)Importar la base ClassicModels.
2)Implementar integridad referencial, basándose en el diagrama entidad relación.
Realizar las siguientes consultas:
1-Stock total de productos agrupados por linea.
2-Producto más vendido.
3-Promedio de ventas agrupado por linea de productos.
4-Nombre de los clientes que realizaron pagos superiores a 25000.
5.Nombre de los clientes con deuda.
6-Monto total debido a ordenes canceladas.
7-Crear una tabla llamada RegistroCancelaciones(cliente,nro_orden) y un trigger 
que registre las cancelaciones de órdenes en dicha tabla.
8-Crear una tabla PedidoProveedores(producto,cantidad) y un trigger que registre 
pedidos a proveedores según las siguientes reglas:
• Motorcycles: pedir 1000 unidades cuando el stock caiga por debajo de 4000 
unidades.
• Classic Cars: pedir 1200 unidades cuando el stock caiga por debajo de 3000 
unidades.
• Resto de productos: pedir 800 unidades cuando el stock caiga por debajo de 
5000 unidades.      



Resolucion:
1.
select sum(quantityinstock), productlines.productline from products inner join
productlines on products.productline = productlines.productline group by
productlines.productline;

2.
select productname, sum(quantityOrdered) from orderdetails o inner join products p on
p.productcode = o.productcode group by o.productcode order by sum(quantityOrdered) desc
limit 1;

3.
select productline, avg(suma) from
(select productline, o.productcode, sum(quantityordered) as suma
from products p
inner join orderdetails o
on p.productcode = o.productcode
group by o.productcode) as tt
group by productline;

4.
select c.customername
from customers c
inner join payments p
on c.customernumber = p.customernumber
where p.amount > 25000
group by c.customername

5.
select SO.customername
from
(select c.customername, sum(od.quantityordered * od.priceeach) as total_ordenado
from customers c
inner join orders o
on o.customernumber = c.customernumber
inner join orderdetails od
on od.ordernumber = o.ordernumber
group by c.customername) as SO
inner join
(select c.customername, sum(p.amount) as total_pagado
from customers c
inner join payments p
on c.customernumber = p.customernumber
group by c.customername) as SP
on SO.customername = SP.customername
where SO.total_ordenado > SP.total_pagado

6.
select sum(od.quantityordered * od.priceeach) as monto_ordenes_canceladas
from orders o
inner join orderdetails od
on o.ordernumber = od.ordernumber
where o.status = 'cancelled'


No hay comentarios:

Publicar un comentario