Xavistian

SQL Repaso para final

Nov 16th, 2019
805
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. /*1.1. Crear una tabla llamada ESTVTA a partir de los
  2. clientes cuya venta anual supera los S/.40,000. Los atributos a
  3. considerar son: ID cliente, nombre, año ,venta del año.
  4. Verificar definición de la nueva tabla (sp_Help).*/
  5.  
  6. select c.CustomerID, c.CompanyName, year(o.OrderDate)'Anio', SUM(od.Quantity*od.UnitPrice*(1-od.Discount)) as Monto
  7. from Customers c join Orders o on c.CustomerID=o.CustomerID join [Order Details] od on od.OrderID=o.OrderID
  8. group by c.CustomerID, c.CompanyName, year(o.OrderDate)
  9. having SUM(od.Quantity*od.UnitPrice*(1-od.Discount))>40000
  10.  
  11. create Table ESTVTA
  12. (
  13. CustomerID nchar(5),
  14. ContactName nvarchar(30),
  15. Anio int,
  16. Monto int
  17. )
  18.  
  19. insert into ESTVTA
  20. select c.CustomerID, c.CompanyName, year(o.OrderDate)'Anio', SUM(od.Quantity*od.UnitPrice*(1-od.Discount)) as Monto
  21. from Customers c join Orders o on c.CustomerID=o.CustomerID join [Order Details] od on od.OrderID=o.OrderID
  22. group by c.CustomerID, c.CompanyName, year(o.OrderDate)
  23. having SUM(od.Quantity*od.UnitPrice*(1-od.Discount))>40000
  24.  
  25. select *
  26. from ESTVTA
  27.  
  28.  
  29. /*1.2.Adicionar una nueva columna a la tabla ESTVTA
  30. llamada "QProductos" (de tipo INT). Verificar la nueva
  31. estructura de Nueva_Tabla.(sp_help). Actualice el nuevo
  32. atributo con la venta en unidades por cliente.*/
  33.  
  34. ALTER TABLE ESTVTA
  35. ADD QProductos int
  36.  
  37. select c.CustomerID, c.CompanyName, year(o.OrderDate)'Anio', COUNT(od.Quantity) as Monto
  38. from Customers c join Orders o on c.CustomerID=o.CustomerID join [Order Details] od on od.OrderID=o.OrderID
  39. group by c.CustomerID, c.CompanyName, year(o.OrderDate)
  40.  
  41. update ESTVTA
  42. set QProductos=(select SUM(od.Quantity) as Monto
  43. from Customers c join Orders o on c.CustomerID=o.CustomerID join [Order Details] od on od.OrderID=o.OrderID
  44. where c.CustomerID=ESTVTA.CustomerID and year(o.OrderDate)=ESTVTA.Anio)
  45.  
  46. /*1.3Escriba un trigger que reste el monto de venta y la cantidad de
  47. productos de la tabla ESTVTA cada vez que se elimine un registro
  48. de OrderDetails*/
  49. go
  50. create trigger tr_dimamo_dimqprod
  51. on [Order Details]
  52. for delete
  53. as
  54. begin
  55. UPDATE ESTVTA
  56. set ESTVTA.Monto=ESTVTA.Monto-(od.Quantity*od.UnitPrice*(1-od.Discount)), ESTVTA.QProductos=ESTVTA.QProductos-(od.Quantity)
  57. from deleted od join Orders o on od.OrderID=o.OrderID join Customers c on c.CustomerID=o.CustomerID
  58. where o.CustomerID=ESTVTA.CustomerID and year(o.OrderDate)=ESTVTA.Anio
  59. end
  60. go
  61.  
  62. select *
  63. from [Order Details] od
  64.  
  65. select c.CustomerID, year(o.OrderDate)as Anio, SUM(od.Quantity*od.UnitPrice*(1-od.Discount)) 'Monto'
  66. from [Order Details] od join Orders o on o.OrderID=od.OrderID join Customers c on c.CustomerID=o.CustomerID
  67. group by c.CustomerID, year(o.OrderDate)
  68.  
  69. select o.CustomerID, o.OrderID, od.ProductID, year((o.OrderDate))as Anio, od.UnitPrice*od.Quantity as Monto
  70. from [Order Details] od join Orders o on o.OrderID=od.OrderID
  71. order by o.CustomerID
  72.  
  73. delete from [Order Details]
  74. where OrderID=10514 and ProductID=20
  75.  
  76. /*ERNSH 10514 20 2017 3159.00*/
  77.  
  78. /*Modificar la tabla Empleados y agregar el campo ImpVendido de tipo INT NOT NULL con valor
  79. por defecto de 0.00 Crear un trigger en la tabla order details para que cada vez que se venda
  80. un producto se actualice el campo impVendido de la tabla empleados con el el valor que tiene en
  81. ese momento más la cantidad vendida en el order details. */
  82.  
  83. ALTER TABLE Employees
  84. drop column ImpVendido
  85.  
  86. update Employees
  87. set ImpVendido=null
  88.  
  89. select *
  90. from Employees
  91.  
  92.  
  93.  
  94. /*Pregunta 1 (3 puntos) Crear una función que retorne el nombre de cliente, nombre del proveedor,
  95. código y nombre de los productos, cantidad vendida (quantity), total de importe bruto vendido(monto) de todas las órdenes
  96. emitidas en un país y un rango de tiempo ingresados como parámetros. */
  97.  
  98.  
  99. create FUNCTION fn_orders_from_cntry_nrange(@pais nvarchar(15), @rango int)
  100. returns TABLE as
  101. return
  102. (
  103.  
  104. )
  105.  
  106. /*Pregunta 2 (3 puntos) Crear un Procedimiento para insertar una línea de detalle de la orden (Order Details), incluir actualizar unidades en stock y en orden. Debe especificar los parámetros necesarios para la inserción*/
  107.  
  108.  
  109. /*Northwind desea saber si las ventas en cantidad de unidades y
  110. en cantidad de órdenes están creciendo por región para saber si debe
  111. expandir su red de Compañías de Envío en determinadas regiones.
  112. Por lo tanto se le ha pedido obtener un procedimiento donde muestre la región que
  113. ha tenido más venta en cantidad de unidades y en cantidad de órdenes dado un año
  114. y un mes ingresado como parámetro. Deberá mostrar además la cantidad de unidades y
  115. cantidades de órdenes vendidas en esas regiones el año anterior*/
Advertisement
Add Comment
Please, Sign In to add comment