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