Taller SQL
Taller SQL
Taller SQL
BEGIN
COMMIT;
END;
Una vez realizados los inserts las tablas deberían quedar así:
Productos = 16 Registros
Clientes = 11 Registros
Pedidos = 15 Registros
Detalles = 44 Registros
Esta información nos debería reflejar datos como estos:
Solución Taller
--1. Número e importe de todos los pedidos realizados en los últimos 60 días
GROUP BY DET.PEDIDO_ID
La estructura de pedidos solo cuenta con un registro realizado en los últimos 60 días
que es el pedido 15 con fecha en ese rango
--2. Número e importe de los pedidos cuyo importe esté entre 100 y 200 E
GROUP BY DET.PEDIDO_ID
FROM PRODUCTOS
Este query devuelve los 16 productos registrados actualmente, ordenados por nombre y
precio, donde se ve que el producto más barato son los chiclets y el más alto la cicla.
SELECT *
FROM CLIENTES
Solo existen dos clientes cuyos apellidos son los solicitados, Tom y Simon con ID 147 y
123 respectivamente
--5. Número total de productos que vende la empresa (en la columna debe aparecer "N°
de productos")
FROM PRODUCTOS
(SELECT PRODUCTO_ID
Este query nos devuelve 1 porque el producto: Caja Chiclets Pequeña aún no ha sido
pedida
--8. Código, nombre del cliente y número total de pedidos que hecho cada cliente,
ordenado de más a menos pedidos
--9. Código, nombre del cliente y número total de pedidos que ha realizado cada cliente
durante 2016
La estructura de pedidos solo cuenta con un pedido efectuado durante el año 2016 y es
el que realizó el cliente: Mark Hoppus
--10. Código, nombre y número total de pedidos de los clientes que han realizado más
de un pedido
HAVING COUNT(*)>1
Este query solo visualiza a Drew Barrymore que es la única cliente que ha efectuado
más de un pedido, tal como se analizaba en el query 8
--11. Para cada pedido mostrar su número, código del cliente y n° total de detalles que
tiene
Para verificar que este query es correcto, basta no más con mirar cualquiera de los
pedidos y comprobar que lo reflejado en el total detalles coincide, al consultar ese
pedido individualmente, si tomamos el Pedido_Id = 11, dice que tienes 3 detalles
--12. Código de cliente, nombre de producto y cantidad total que ha pedido cada cliente
de cada producto
Acá se refleja la totalidad de productos con sus respectivas cantidades solicitadas por
cada cliente
--13. Para cada cliente mostrar su código, nombre, número e importe de cada uno de
sus pedidos
ORDER BY CLI.CLIENTE_ID
Aquí necesariamente hay que sumarizar, porque a excepción de los pedidos de Drew
Barrymore que hizo 5 pedidos por separado, los demás se hicieron sobre un mismo
pedido; de manera que si analizamos el PEDIDO 11
829952 = Sumatoria
--14. Para cada cliente menor de edad mostrar su código, nombre, el importe más alto,
el más bajo de los pedidos que ha realizado
GROUP BY CLIE.CLIENTE_ID)
UNION ALL
GROUP BY CLIE.CLIENTE_ID)
En este caso los resultados muestran el pedido más bajo y alto para el único cliente
menor de edad Drew Barrymore quien realizó 5 pedidos discriminados así:
· Pedido: 2 donde solicitó 5 Pan para un total de: 2500 es el pedido más bajo
· Pedido: 13 donde solicitó 15 Cicla Estatica para un total de: 270000 es el pedido
más alto
--15. Mostrar el código del producto, el n° de veces que ha sido pedido y la cantidad
total de unidades que se han pedido (los que no hayan sido pedidos colocar un cero)
GROUP BY PRODUCTO_ID
UNION ALL
(SELECT PRODUCTO_ID
Aquí el único con producto con 0 unidades pedidas es la Caja de Chiclets Pequeña
SELECT PRO.*
GROUP BY DET.PRODUCTO_ID)
El producto del que más unidades se han pedido es el Atún con 695 unidades
discriminadas así:
SELECT PRO.*
WHERE DET.PEDIDO_ID = 1)
· Pescado $ 7856
--18. Datos del producto más caro de cada pedido (con una consulta correlacionada)
GROUP BY DETA.PEDIDO_ID
Si hacemos el análisis para el pedido 4 donde dice que el producto de mayor valor es
Leche 1L a $ 4563, vemos que entre los 2 productos que pidió, efectivamente la Leche
es la más alta en precio.
--19. Código de cliente y cantidad total que se ha gastado en 2016
--20. Cantidad total gastada y código de cliente de los que menos han gastado en 2016
Tenemos solo un registro, puesto que solo hay un pedido que hay sido realizado
durante el 2016, que es el pedido 11 de Mark Hoppus que solicitó
· 8 Papayas
· 12 Sandias
· 92 Pescados
--21. Para cada cliente mostrar su código y la suma total de sus pedidos y gastos de
envío
Si analizamos por ejemplo el pedido 9 realizado por: Britney Spears el cual incluye:
Pantalon: 7800 * 10 U = 78000
= 1002000
Total = 1002050
--22. Número de pedido, importe y cliente de los pedidos que no tienen gastos de envío
(debe aparecer un 0 en la columna de gastos de envío nulos)
WHERE PED.GASTOS_ENVIO = 0
Con excepción de los pedidos: 1,2,3, 5 y 9 que tienen gastos de 50, estos 10 pedidos
no tienen gastos de envío.
GROUP BY PED.PEDIDO_ID
UNION ALL
GROUP BY PED.PEDIDO_ID
)
El pedido más alto es el 8 con un total de $ 1622640 en razón de las 600 unidades de
atún que pide, y el más bajo el 2 con un total de $ 2500 que solo icluye 5 unidades de
Queso
FROM PRODUCTOS
--25. Escribe los datos de los pedidos y sus clientes con el siguiente formato:
--26. (Solo con subconsultas, sin combinar tablas) Datos de los clientes que han pedido
el producto PANTALÓN
FROM CLIENTES
FROM DETALLES
--27. (Sin subconsultas) Datos de los clientes que han pedido el producto PANTALÓN
GROUP BY PEDI.CLIENTE_ID)
En este query hacemos el análisis para los pedidos realizados por el cliente: Drew
Barrymore, quien realizó 5 pedidos discriminados así:
Si la media para este pedido es de $ 102060, solo debe mostrar los pedidos de ciclas y
sandías, porque son los únicos mayores al AVG
--29. Lista de todos los pedidos mostrando también los días previstos de espera para el
envío
UNION ALL
SELECT PED.*, 0 AS DIAS
FROM PEDIDOS