Advertisement
jesus777matias

TP6

Oct 31st, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE DATABASE "TP6_Grupo15";
  2. \c "TP6_Grupo15"
  3.  
  4. CREATE TABLE Cargo(
  5.         ID_cargo     varchar(3) PRIMARY KEY,
  6.         Nombre_Cargo varchar(20)
  7. );
  8.  
  9. CREATE TABLE Tipo_Cliente(
  10.        ID_tipo     varchar(2) PRIMARY KEY,
  11.        Nombre_Tipo varchar(30)
  12. );
  13.  
  14. CREATE TABLE Proveedor(
  15.        CUIT_proveedor   integer PRIMARY KEY,
  16.        Nombre_proveedor varchar(20)
  17. );
  18.  
  19. CREATE TABLE Empleado(
  20.         Codigo_Empleado integer PRIMARY KEY,
  21.         Nombre_Empleado varchar(20),
  22.         DNI_Empleado    integer,
  23.         ID_Cargo        varchar(3),
  24.  
  25.         FOREIGN KEY(ID_Cargo) REFERENCES Cargo(ID_Cargo)
  26. );
  27.  
  28. CREATE TABLE Cliente (
  29.        Codigo_Cliente integer PRIMARY KEY,
  30.        CUIT_Cliente   integer,
  31.        Nombre_Cliente varchar(30),
  32.        Telef_Cliente  varchar(20),
  33.        ID_Tipo        varchar(2),
  34.  
  35.        FOREIGN KEY(ID_Tipo) REFERENCES Tipo_Cliente(ID_Tipo)
  36. );
  37.  
  38. CREATE TABLE Producto(
  39.        Codigo_Producto integer PRIMARY KEY,
  40.        Nombre_Producto varchar(20),
  41.        Precio_Producto integer,
  42.        CUIT_Proveedor  integer,
  43.    
  44.        FOREIGN KEY(CUIT_Proveedor) REFERENCES Proveedor(CUIT_Proveedor)
  45. );
  46.  
  47. CREATE TABLE Provincia(
  48.        Codigo_Provincia integer PRIMARY KEY,
  49.        Nombre_Provincia varchar(20)
  50. );
  51.  
  52. CREATE TABLE Compania_Envio(
  53.        Codigo_Compania  integer PRIMARY KEY,
  54.        Nombre_Compania  varchar(20),
  55.        Telef_Compania   integer,
  56.        Codigo_Provincia integer,
  57.    
  58.     FOREIGN KEY(Codigo_Provincia) REFERENCES Provincia(Codigo_Provincia)
  59. );
  60.  
  61. CREATE TABLE Pedido(
  62.     Codigo_Pedido          integer PRIMARY KEY,
  63.     Fecha_Pedido           date,
  64.     Fecha_Envio            date,
  65.     Direccion_Destinatario varchar(20),
  66.     Codigo_Cliente         integer,
  67.     Codigo_Empleado        integer,
  68.     Codigo_Compania        integer,
  69.    
  70.  
  71.     FOREIGN KEY(Codigo_Cliente)  REFERENCES Cliente(Codigo_Cliente),
  72.     FOREIGN KEY(Codigo_Empleado) REFERENCES Empleado(Codigo_Empleado),
  73.     FOREIGN KEY(Codigo_Compania) REFERENCES Compania_Envio(Codigo_Compania)
  74. );
  75.  
  76. CREATE TABLE Detalle_Pedido(
  77.     Codigo_Pedido        integer references Pedido(Codigo_Pedido),
  78.     Codigo_Producto      integer references Producto(Codigo_Producto),
  79.     Cantidad             integer,
  80.     Porcentaje_Descuento integer,
  81.  
  82.     primary key(Codigo_Pedido,Codigo_Producto)
  83. );
  84.  
  85.  
  86.  
  87. INSERT INTO Cargo VALUES
  88.  ('GER', 'Gerente'),
  89.  ('ENC', 'Encargado'),
  90.  ('VEN', 'Vendedor')
  91. ;
  92.  
  93. INSERT INTO Tipo_Cliente VALUES
  94.  ('CF', 'ConsumidorFinal'),
  95.  ('RI', 'ResponsableInscripto'),
  96.  ('EX', 'Exento')
  97. ;
  98.  
  99. INSERT INTO Proveedor VALUES
  100.  (11111111, 'Proveedor1'),
  101.  (22222222, 'Proveedor2'),
  102.  (33333333, 'Proveedor3')
  103. ;
  104.  
  105. INSERT INTO Empleado  VALUES
  106.  (2810, 'Empleado1', 22222222, 'VEN'),
  107.  (2811, 'Empleado2', 33333333, 'VEN'),
  108.  (2812, 'Empleado3', 44444444, 'ENC'),
  109.  (2813, 'Empleado4', 55555555, 'GER'),
  110.  (2814, 'Empleado5', 11111111, 'VEN')
  111. ;
  112.  
  113. INSERT INTO Cliente VALUES
  114.  (1001, 2010010, 'Cliente1', 111, 'CF'),
  115.  (2002, 2020020, 'Cliente2', 222, 'EX'),
  116.  (3003, 2030030, 'Cliente3', 333, 'CF'),
  117.  (4004, 2040040, 'Cliente4', 444, 'RI'),
  118.  (5005, 2050050, 'Cliente5', 555, 'RI')
  119. ;
  120.  
  121. INSERT INTO Producto VALUES
  122.  (111, 'Pendrive', 250 , 11111111),
  123.  (222, 'Memoria' , 300 , 11111111),
  124.  (333, 'Resma A4', 180 , 22222222),
  125.  (444, 'Caja CD' , 1200, 33333333),
  126.  (555, 'Cartucho', 650 , 22222222)
  127. ;
  128.  
  129. INSERT INTO Provincia VALUES
  130.  (388, 'Jujuy'),
  131.  (381, 'Tucumán'),
  132.  (387, 'Salta')
  133. ;
  134.  
  135. INSERT INTO Compania_Envio VALUES
  136.  (10, 'Compañía1', 155155, 381),
  137.  (20, 'Compañía2', 152152, 388),
  138.  (30, 'Compañía3', 153153, 388),
  139.  (40, 'Compañía4', 154154, 387)
  140. ;
  141.  
  142. INSERT INTO Pedido VALUES
  143.  (1, '30/09/2019', '02/10/2019', 'Direccion1', 1001, 2814, 10),
  144.  (2, '30/09/2019', '03/10/2019', 'Direccion2', 4004, 2814, 20),
  145.  (3, '30/09/2019', '10/10/2019', 'Direccion3', 1001, 2810, 40),
  146.  (4, '01/10/2019', '02/10/2019', 'Direccion4', 2002, 2814, 30),
  147.  (5, '01/10/2019', '03/10/2019', 'Direccion5', 3003, 2811, 10),
  148.  (6, '02/10/2019', '05/10/2019', 'Direccion6', 5005, 2810, 20)
  149. ;
  150.  
  151. INSERT INTO Detalle_Pedido VALUES
  152.  (1, 111,  2, 0),
  153.  (1, 222,  5, 0),
  154.  (1, 444, 20, 10),
  155.  (2, 333, 10, 5),
  156.  (2, 555,  1, 0),
  157.  (3, 111,  1, 0),
  158.  (4, 555,  2, 0),
  159.  (5, 111,  1, 0),
  160.  (5, 222,  1, 15),
  161.  (5, 333,  1, 0),
  162.  (1, 555,  5, 10)
  163. ;
  164. --4. Utilice subcONsultas y muestre el nombre de los empleados que vendieron el Producto
  165. --   "Pendrive"
  166.  
  167. SELECT nombre_empleado
  168. FROM   empleado
  169. WHERE  codigo_empleado IN(
  170.      
  171.        SELECT codigo_empleado
  172.        FROM   pedido
  173.        WHERE  codigo_pedido IN(
  174.  
  175.               SELECT codigo_pedido
  176.               FROM   detalle_pedido
  177.               WHERE  codigo_producto IN(
  178.        
  179.                      SELECT codigo_producto
  180.                      FROM   producto
  181.                      WHERE  nombre_producto='Pendrive')))
  182. ;
  183.  
  184.  
  185. --5. Utilice subcONsultas y muestre los pedidos cON fecha de pedido del 30/09/2019 que
  186. --   correspONden al tipo de cliente “CONsumidor FINal” y realizados en la compañía ubicada en
  187. --   “Tucumán”.
  188.  
  189. SELECT *
  190. FROM   pedido
  191. WHERE  fecha_pedido = '30/09/2019'
  192.  
  193.        AND codigo_cliente IN(
  194.            SELECT codigo_cliente
  195.            FROM   cliente
  196.            WHERE  id_tipo IN(
  197.  
  198.                   SELECT id_tipo
  199.                   FROM   tipo_cliente
  200.                   WHERE  nombre_tipo = 'Consumidor Final'))
  201.  
  202.        AND codigo_compania IN(
  203.            SELECT codigo_compania
  204.            FROM   compania_envio
  205.            WHERE  codigo_provINcia IN(
  206.        
  207.                   SELECT codigo_provINcia
  208.                   FROM   provINcia
  209.                   WHERE  nombre_provINcia = 'Tucumán'))
  210. ;
  211.  
  212. --6. Utilice INNER JOIN y muestre.codigo_producto.codigo_producto cada producto cON su correspONdiente cantidad vendida,
  213. --   agrupado por “Nombre producto”.
  214.  
  215. SELECT     nombre_producto AS "Nombre Producto",
  216.            sum(cantidad)   AS "Cantidad Vendida"
  217.  
  218. FROM       producto p
  219. INNER JOIN detalle_pedido dp
  220. on         p.codigo_producto = dp.codigo_producto
  221. GROUP BY   nombre_producto;
  222.  
  223. --7. Utilice inner join y muestre los empleados que vendieron “Resma A4”.
  224.  
  225. SELECT     nombre_empleado
  226. FROM       empleado e
  227.  
  228. INNER JOIN pedido pe
  229.            INNER JOIN detalle_pedido dp
  230.                       INNER JOIN producto pr
  231.                       ON pr.codigo_producto = dp.codigo_producto
  232.            ON pe.codigo_pedido = dp.codigo_pedido
  233. ON e.codigo_empleado  = pe.codigo_empleado
  234.  
  235. WHERE      pr.nombre_producto = 'Resma A4';
  236.  
  237. --8. Muestre los códigos de pedidos de la tabla “DetallePedido” con su correspondiente total.
  238. --   Considere el precio, la cantidad y el descuento para el cálculo del total.
  239.  
  240. SELECT     dp.codigo_pedido,
  241.            sum(dp.cantidad*pr.precio_producto*(1-dp.porcentaje_descuento/100)) AS "Total"
  242.  
  243. FROM       detalle_pedido dp
  244. INNER JOIN producto pr
  245. ON         pr.codigo_producto = dp.codigo_producto
  246. GROUP BY   dp.codigo_pedido
  247. ORDER BY   dp.codigo_pedido;
  248.  
  249. --9. Muestre en una consulta relacionada con inner join el cuit y nombre de cliente, y el
  250. --   “nombre tipo” agrupadas por “nombre tipo”.
  251.  
  252. SELECT prov.cuit_proveedor AS "CUIT",
  253.        cli.nombre_cliente  AS "Nombre de cliente",
  254.        tc.nombre_tipo      AS "Nombre Tipo"
  255.  
  256. FROM   detalle_pedido dp
  257. INNER JOIN producto prod
  258.            INNER JOIN proveedor prov
  259.            ON prov.cuit_proveedor = prod.cuit_proveedor
  260. ON dp.codigo_producto = prod.codigo_producto
  261.  
  262. INNER JOIN pedido ped
  263.            INNER JOIN cliente cli
  264.                       INNER JOIN tipo_cliente tc
  265.                       ON tc.id_tipo = cli.id_tipo
  266.            ON ped.codigo_cliente = cli.codigo_cliente
  267. ON ped.codigo_pedido = dp.codigo_pedido
  268.  
  269. GROUP BY "Nombre Tipo", "CUIT", "Nombre de cliente";
  270.  
  271.  
  272.  
  273. --10. Utilizando inner join muestre el porcentaje descuento, el nombre del producto y la fecha de
  274. --    envío, cuya fecha pedido es 01/10/2019.
  275.  
  276. SELECT prod.nombre_producto    AS "Nombre producto",
  277.        ped.fecha_envio         AS "Fecha envio",
  278.        dp.porcentaje_descuento AS "Porcentaje de descuento"
  279.                    
  280. FROM   detalle_pedido dp
  281.                    
  282. INNER JOIN producto prod
  283. ON dp.codigo_producto = prod.codigo_producto
  284.                    
  285. INNER JOIN pedido ped
  286. ON ped.codigo_pedido = dp.codigo_pedido
  287.                    
  288. WHERE  fecha_pedido = '01/10/2019'      
  289. ORDER BY nombre_producto asc;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement