Creación de la Tabla Proveedores e Inserción de Datos
0) Crear una tabla llamada ‘proveedores’ con los siguientes campos:
numprov
(texto, tamaño 3, clave primaria)nombreprov
(texto, tamaño 15)estado
(entero)ciudad
(texto, tamaño 15)
Código SQL:
CREATE TABLE proveedores (
numprov VARCHAR(3) PRIMARY KEY,
nombreprov VARCHAR(15),
estado INT,
ciudad VARCHAR(15)
);
Insertar los siguientes valores en la tabla ‘proveedores’:
- (v1, Smith, 20, Londres)
- (v2, Jones, 10, Paris)
- (v3, Blake, 30, Paris)
- (v4, Clarke, 20, Londres)
- (v5, Adams, 30, Atenas)
Código SQL:
INSERT INTO proveedores VALUES ('v1', 'Smith', 20, 'Londres');
INSERT INTO proveedores VALUES ('v2', 'Jones', 10, 'Paris');
INSERT INTO proveedores VALUES ('v3', 'Blake', 30, 'Paris');
INSERT INTO proveedores VALUES ('v4', 'Clarke', 20, 'Londres');
INSERT INTO proveedores VALUES ('v5', 'Adams', 30, 'Atenas');
Consultas SQL
1) Números de proveedor que realizan suministros:
SELECT numprov FROM suministra;
2) Números de proveedor que realizan suministros (sin repeticiones):
SELECT DISTINCT numprov FROM suministra;
3) Suma total de las cantidades suministradas:
SELECT SUM(cantidad) FROM suministra;
4) Suma de las distintas cantidades suministradas, agrupadas por número de parte:
SELECT numparte, SUM(cantidad) FROM suministra GROUP BY numparte;
5) Cantidades totales suministradas por cada proveedor:
SELECT numprov, SUM(cantidad) FROM suministra GROUP BY numprov;
6) Cantidades totales suministradas por los proveedores ‘v1’ y ‘v4’:
SELECT numprov, SUM(cantidad) FROM suministra WHERE numprov='v1' OR numprov='v4' GROUP BY numprov;
7) Números de parte suministrados en una cantidad mayor o igual que 1000:
SELECT numparte, SUM(cantidad) FROM suministra GROUP BY numparte HAVING SUM(cantidad) >= 1000;
8) Partes suministradas por ‘v1’, ‘v2’ o ‘v3’ en una cantidad total mayor de 550:
SELECT numparte, SUM(cantidad) FROM suministra WHERE numprov='v1' OR numprov='v2' OR numprov='v3' GROUP BY numparte HAVING SUM(cantidad) >= 550;
9) Número de proveedores en Londres:
SELECT COUNT(numprov) FROM proveedores WHERE ciudad='Londres';
10) Número de partes rojas:
SELECT COUNT(*) FROM partes WHERE color='Rojo';
11) Colores repetidos en las partes:
SELECT color, COUNT(color) FROM partes GROUP BY color HAVING COUNT(color) >= 2;
12) Nombres de parte que son azules o están almacenadas en París:
SELECT nombreparte FROM partes WHERE color='Azul' OR ciudad='Paris';
13) Colores de las partes que no son tornillos:
SELECT color FROM partes WHERE NOT (nombreparte <= 'Tornillo');
(Nota: Esta consulta asume que cualquier parte cuyo nombre sea alfabéticamente menor o igual que ‘Tornillo’ no lo es. Una mejor consulta sería SELECT color FROM partes WHERE nombreparte <> 'Tornillo';
o, si puede haber múltiples tipos de tornillos, SELECT color FROM partes WHERE nombreparte NOT LIKE 'Tornillo%';
)
14) Número de proveedores que no tienen su almacén en Atenas:
SELECT COUNT(*) FROM proveedores WHERE NOT (ciudad='Atenas');
(Nota: Una consulta más correcta sería SELECT COUNT(*) FROM proveedores WHERE ciudad <> 'Atenas';
)
15) Nombres de parte suministradas en una cantidad mayor o igual de 400:
SELECT nombreparte FROM partes INNER JOIN suministra ON suministra.numparte = partes.numparte WHERE cantidad >= 400;
16) Proveedores que suministran partes en una cantidad menor o igual que 300:
SELECT DISTINCT nombreprov FROM proveedores INNER JOIN suministra ON suministra.numprov = proveedores.numprov WHERE cantidad <= 300;
17) Nombre y ciudad de los proveedores que suministran partes en una cantidad menor o igual que 300:
SELECT DISTINCT nombreprov, ciudad FROM proveedores INNER JOIN suministra ON suministra.numprov = proveedores.numprov WHERE cantidad <= 300;
18) Nombres de las partes suministradas en una cantidad total de 550 o más:
SELECT partes.nombreparte, SUM(suministra.cantidad) AS SumaDeCantidad FROM partes INNER JOIN suministra ON partes.numparte = suministra.numparte GROUP BY partes.nombreparte HAVING SUM(suministra.cantidad) >= 550;
19) Nombres de parte que suministran los distintos proveedores:
SELECT proveedores.nombreprov, partes.nombreparte FROM partes INNER JOIN (proveedores INNER JOIN suministra ON proveedores.numprov = suministra.numprov) ON partes.numparte = suministra.numparte;
20) Proveedores ubicados en el mismo sitio que alguna parte:
SELECT nombreprov, nombreparte FROM proveedores INNER JOIN partes ON proveedores.ciudad = partes.ciudad;
21) Nombres de las piezas que se suministran en la cantidad máxima:
SELECT nombreparte FROM suministra INNER JOIN partes ON suministra.numparte = partes.numparte WHERE cantidad = (SELECT MAX(cantidad) FROM suministra);
22) Números de proveedores que suministran por encima de la media de suministros:
SELECT numprov, SUM(cantidad) FROM suministra GROUP BY numprov HAVING SUM(cantidad) > (SELECT AVG(cantidad) FROM suministra);
23) Números de parte suministradas en una cantidad media mayor de 450:
SELECT numparte, AVG(cantidad) FROM suministra GROUP BY numparte HAVING AVG(cantidad) > 450;
24) Peso medio de las partes:
SELECT AVG(peso) FROM partes;