Xavistian

Practica PC2

Nov 2nd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. /*5. Seleccionar por país el cliente a quien más se le ha vendido
  2. y el número de órdenes que se emitieron para ese cliente, solo de las
  3. ventas del 2017 y el país de envío sea el mismo del cliente,
  4. ordenado por país y nombre cliente. Se debe mostrar país,
  5. id cliente, nombre cliente, numero ordenes, importe vendido*/
  6.  
  7. create view vw_pc2_ej5 as
  8. select c.Country, c.CustomerID, c.CompanyName, Count(o.OrderID)Cantidad,
  9. SUM(od.Quantity*od.UnitPrice*(1-od.Discount))Monto
  10. from Customers c join Orders o on c.CustomerID=o.CustomerID join [Order Details] od on o.OrderID=od.OrderID
  11. where year(o.OrderDate)=2017 and o.ShipCountry=c.Country
  12. group by c.Country, c.CustomerID, c.CompanyName
  13.  
  14. select *
  15. from vw_pc2_ej5 vw
  16. where vw.Monto>=(select max(svw.Monto) from vw_pc2_ej5 svw where vw.Country=svw.Country)
  17. order by vw.Monto desc
  18.  
  19. /* 6. Liste los productos que se quedarían desabastecidos
  20. si la venta en unidades se multiplica por 2.
  21. Muestre el código del producto,
  22. su stock actual, la venta en unidades actual y
  23. la que sería si se multiplica por 2.*/
  24.  
  25. select p.ProductID, p.UnitsInStock, SUM(od.Quantity)VentaActual, SUM(od.Quantity)*2'VentaNueva'
  26. from Products p join [Order Details] od on p.ProductID=od.ProductID join Orders o on o.OrderID=od.OrderID
  27. group by p.ProductID, p.UnitsInStock
  28. having SUM(od.Quantity)*2>p.UnitsInStock
  29.  
  30. /* 7 Mostrar el proveedor que
  31. tuvo la menor venta (MONTO) de productos en un año 2017*/
  32.  
  33. create view vw_pc2_ej7 as
  34. select s.SupplierID, s.CompanyName, year(o.OrderDate)'Año', SUM(od.Quantity*od.UnitPrice*(1-od.Discount))'Monto'
  35. from Suppliers s join Products p on p.SupplierID=s.SupplierID join [Order Details] od on od.ProductID=p.ProductID
  36. join Orders o on o.OrderID=od.OrderID
  37. where year(o.OrderDate)=2017
  38. group by s.SupplierID, s.CompanyName, year(o.OrderDate)
  39.  
  40.  
  41. select *
  42. from vw_pc2_ej7 vw
  43. where vw.Monto<=(select min(svw.Monto) from vw_pc2_ej7 svw)
  44.  
  45. /* 8 Muestre el territorio y nombre de los jefes cuyos empleados han superado dos órdenes vendidas y más de
  46. 1000 en monto vendido. Estos jefes serán acreedores de un premio siempre y cuando
  47. la diferencia en días entre la fecha de la orden y la fecha de despacho no sea mayor a 7.*/
  48.  
  49. select t.TerritoryDescription, j.EmployeeID, j.FirstName, SUM(od.Quantity*od.UnitPrice*(1-od.Discount))'Monto'
  50. from Territories t join EmployeeTerritories et on et.TerritoryID=t.TerritoryID
  51. join Employees j on j.EmployeeID=et.EmployeeID
  52. join Employees e on j.EmployeeID=e.ReportsTo
  53. join Orders o on o.EmployeeID=e.EmployeeID
  54. join [Order Details] od on o.OrderID=od.OrderID
  55. where DATEDIFF(dd,o.OrderDate,o.ShippedDate)<7 and o.ShippedDate is not null
  56. group by t.TerritoryDescription, j.EmployeeID, j.FirstName
  57. having Count(o.OrderID)>2 and SUM(od.Quantity*od.UnitPrice*(1-od.Discount))>1000
  58. order by t.TerritoryDescription asc
  59.  
  60. /*9 Listar los empleados y el producto que más vendió en cantidad de Órdenes
  61. realizado en un determinado año 2017.
  62. Tome como base la fecha de la orden (orderdate)*/
  63. /*Empleado, el producto, la cantidad*/
  64.  
  65. create view vw_pc2_ej9 as
  66. select e.EmployeeID, e.FirstName+' '+e.LastName 'Nombre', p.ProductID, COUNT(od.OrderID)'Cantidad', p.ProductName
  67. from Employees e join Orders o on e.EmployeeID=o.EmployeeID join [Order Details] od on o.OrderID=od.OrderID
  68. join Products p on p.ProductID=od.ProductID
  69. where year(o.OrderDate)=2017
  70. group by e.EmployeeID, e.FirstName+' '+e.LastName, p.ProductID, p.ProductName
  71.  
  72.  
  73. select *
  74. from vw_pc2_ej9 vw where vw.Cantidad= (select max(svw.Cantidad) from vw_pc2_ej9 svw where vw.EmployeeID=svw.EmployeeID)
  75. order by vw.EmployeeID asc
Advertisement
Add Comment
Please, Sign In to add comment