PRÁCTICA UT8
Dada la base de datos proveedores proporcionada en la plataforma ([Link]), realizar las
siguientes consultas:
1. Obtener los números y nombres de pieza que no son suministrados por ningún vendedor.
SELECT numpieza,nompieza
FROM pieza
WHERE numpieza NOT IN(SELECT numpieza FROM preciosum);
2. Número y nombre de las piezas suministradas por los vendedores número 2 y 4 (no
necesariamente las suministran los dos a la vez).
SELECT numpieza,nompieza
FROM pieza
WHERE numpieza IN (SELECT numpieza
FROM preciosum
WHERE numvend IN (2,4));
o también:
SELECT DISTINCT [Link],nompieza
FROM pieza INNER JOIN preciosum ON [Link]=[Link]
WHERE numvend IN (2,4);
3. Obtener el número total de vendedores que suministran cada pieza.
SELECT nompieza, COUNT(*) AS Num_vendedores
FROM pieza INNER JOIN preciosum ON [Link]=[Link]
GROUP BY nompieza;
4. Número y nombre de la(s) pieza(s) más cara(s) y de la(s) más barata(s).
SELECT numpieza,nompieza, preciovent
FROM pieza
WHERE preciovent=(SELECT MAX(preciovent) FROM pieza)
OR preciovent=(SELECT MIN(preciovent) FROM pieza);
5. Nombre y precio de venta de las piezas no inventariadas
SELECT nompieza, preciovent
FROM pieza
WHERE numpieza NOT IN (SELECT numpieza
FROM inventario);
6. Mostrar número y fecha de los pedidos así como el nombre de su vendedor y su importe
total (la suma de los importes de cada una de sus líneas de pedido). Ordenar el resultado por
fecha descendentemente.
SELECT [Link],fecha,nomvend,SUM(cantpedida*preciocompra) AS Tot_ped
FROM pedido p INNER JOIN vendedor v ON [Link]=[Link] INNER JOIN
linped l ON [Link]=[Link]
GROUP BY [Link]
ORDER BY fecha DESC;
7. Mostrar el número y fecha del pedido de menor importe, junto con el nombre de su
vendedor
SELECT [Link],fecha, nomvend, SUM(preciocompra*cantpedida) AS
Importe
FROM linped INNER JOIN pedido ON [Link]=[Link] INNER
JOIN vendedor ON [Link]=[Link]
GROUP BY [Link]
HAVING SUM(preciocompra*cantpedida)<=ALL
SELECT SUM(preciocompra*cantpedida)
FROM linped
GROUP BY numpedido);
8. Mostrar los nombres de los vendedores de Alicante o Asturias, que tengan teléfono y que
vivan en avenidas o que su teléfono acabe en 1.
SELECT nomvend
FROM vendedor
WHERE provincia IN ('Alicante','Asturias') AND telefono IS NOT NULL AND
(direccion LIKE 'Avda%' OR telefono LIKE '%1');
9. Mostrar el nombre de la pieza suministrada por más vendedores
SELECT nompieza
FROM pieza JOIN preciosum ON [Link]=[Link]
GROUP BY nompieza
HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM preciosum GROUP BY numpieza);
10. Mostrar el nombre del vendedor que hizo el pedido de mayor cuantía.
+------------------+--------------+
| nomvend | Total_Pedido |
+------------------+--------------+
| agapito lafuente | 6115.00 |
+------------------+--------------+
SELECT nomvend, SUM(preciocompra*cantpedida) AS Total_Pedido
FROM linped INNER JOIN pedido ON [Link]=[Link] INNER JOIN
vendedor ON [Link]=[Link]
GROUP BY [Link]
HAVING SUM(preciocompra*cantpedida) >= ALL (SELECT SUM(preciocompra*cantpedida)
FROM linped GROUP BY numpedido);
11. Muestra el nombre de todos los vendedores junto con la cantidad de pedidos realizados.
SELECT nomvend, COUNT([Link]) AS Cant_pedidos
FROM vendedor v LEFT JOIN pedido p ON [Link]=[Link]
GROUP BY nomvend;
12. Muestra el importe total de todos los pedidos realizados por vendedores de la provincia de
Alicante.
SELECT SUM(preciocompra*cantpedida) AS Importe
FROM linped INNER JOIN pedido ON [Link]=[Link] INNER JOIN
vendedor ON [Link]=[Link]
WHERE provincia='alicante';
13. Número y fecha de los pedidos que incluyen más de una pieza.
SELECT [Link], fecha
FROM pedido INNER JOIN linped ON [Link]=[Link]
GROUP BY [Link]
HAVING COUNT(*)>1;