Evaluacion Hasta Groupby Having

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

CURSO GET STARTED IN SQL – III Edición

EJERCICIOS PARTE 3– TABLA FABRICANTES

SCRIPT DE CREACCIÓN DE TABLAS

CREATE TABLE fabricante (


codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL
);

CREATE TABLE producto (


codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
precio DOUBLE NOT NULL,
codigo_fabricante INT UNSIGNED NOT NULL,
FOREIGN KEY (codigo_fabricante) REFERENCES fabricante(codigo)
);

INSERT INTO fabricante VALUES(1, 'Asus');


INSERT INTO fabricante VALUES(2, 'Lenovo');
INSERT INTO fabricante VALUES(3, 'Hewlett-Packard');
INSERT INTO fabricante VALUES(4, 'Samsung');
INSERT INTO fabricante VALUES(5, 'Seagate');
INSERT INTO fabricante VALUES(6, 'Crucial');
INSERT INTO fabricante VALUES(7, 'Gigabyte');
INSERT INTO fabricante VALUES(8, 'Huawei');
INSERT INTO fabricante VALUES(9, 'Xiaomi');

INSERT INTO producto VALUES(1, 'Disco duro SATA3 1TB', 86.99, 5);
INSERT INTO producto VALUES(2, 'Memoria RAM DDR4 8GB', 120, 6);
INSERT INTO producto VALUES(3, 'Disco SSD 1 TB', 150.99, 4);
INSERT INTO producto VALUES(4, 'GeForce GTX 1050Ti', 185, 7);
INSERT INTO producto VALUES(5, 'GeForce GTX 1080 Xtreme', 755, 6);
INSERT INTO producto VALUES(6, 'Monitor 24 LED Full HD', 202, 1);
INSERT INTO producto VALUES(7, 'Monitor 27 LED Full HD', 245.99, 1);
INSERT INTO producto VALUES(8, 'Portátil Yoga 520', 559, 2);
INSERT INTO producto VALUES(9, 'Portátil Ideapd 320', 444, 2);
INSERT INTO producto VALUES(10, 'Impresora HP Deskjet 3720', 59.99, 3);
INSERT INTO producto VALUES(11, 'Impresora HP Laserjet Pro M26nw', 180, 3);

EJERCICIOS

1. Lista el nombre de todos los productos que hay en la tabla producto.

SELECT nombre
FROM producto;

SELECT DISTINCT nombre --No es necesario poner el DISTINCT porque cada


producto va asociado a un identificador que es único
FROM producto;

2. Lista el nombre de los productos, el precio en euros y el precio en dólares


estadounidenses (USD). 1 € son 1.16 USD

SELECT nombre, precio AS precio_€, ROUND(precio*1.16,2) AS precio_USD


FROM producto;

3. Lista los nombres y los precios de todos los productos de la tabla producto,
convirtiendo los nombres a mayúscula.

SELECT UPPER(nombre) AS nombre_articulo, precio AS precio_€


FROM producto;

4. Lista los nombres y los precios de todos los productos de la tabla producto,
convirtiendo los nombres a minúscula.

SELECT LOWER(nombre) AS nombre_articulo, precio AS precio_€


FROM producto;

5. Lista el código de los fabricantes y sus nombres que tienen productos en la tabla
producto.

SELECT fabricante.codigo AS ID_fabricante, fabricante.nombre AS


nombre_fabricante
FROM fabricante, producto
WHERE fabricante.codigo = producto.codigo_fabricante;

6. Lista el código de los fabricantes que tienen productos en la tabla producto,


eliminando los códigos que aparecen repetidos.

SELECT DISTINCT fabricante.codigo AS ID_fabricante, fabricante.nombre AS


nombre_fabricante
FROM fabricante, producto
WHERE fabricante.codigo = producto.codigo_fabricante;

7. Devuelve una lista con las 5 primeras filas de la tabla fabricante.

SELECT *
FROM fabricante
LIMIT 5;

8. Lista los nombres de los fabricantes ordenados de forma ascendente.

SELECT nombre
FROM fabricante
ORDER BY nombre;

9. Lista los nombres de los fabricantes ordenados de forma descendente.

SELECT nombre
FROM fabricante
ORDER BY nombre DESC;
10. Lista los nombres de los productos ordenados en primer lugar por el nombre de
forma ascendente y en segundo lugar por el precio de forma descendente.

SELECT nombre, precio 


FROM producto
ORDER BY nombre , precio ;

11. Selecciona las filas 4, 5 y 6

SELECT *
FROM producto
WHERE codigo IN (4,5,6);

SELECT *
FROM producto
LIMIT 3 OFFSET 3;

12.Lista el nombre y el precio del producto más barato.

SELECT nombre, precio 


FROM producto
ORDER BY precio ASC;

SELECT nombre, precio 


FROM producto
ORDER BY precio ASC
LIMIT 1;

13. Lista el nombre y el precio del producto más caro. 

SELECT nombre, precio 


FROM producto
ORDER BY precio DESC;

SELECT nombre, precio 


FROM producto
ORDER BY precio DESC
LIMIT 1;

14. Lista todos los productos que tengan un precio entre 80€ y 300€. Sin utilizar el
operador BETWEEN.

SELECT nombre, precio 


FROM producto
WHERE precio>=80 AND precio<=300;

15. Comprueba que está bien la pregunta anterior usando BETWEEN

SELECT nombre, precio 


FROM producto
WHERE precio BETWEEN 80 AND 300;

16. Devuelve un listado con los nombres de los fabricantes que tienen 2 o más
productos.

AYUDA

SELECT f.nombre, p.nombre 


FROM fabricante f, producto p
WHERE f.codigo = p.codigo_fabricante;

SELECT f.nombre, COUNT(*) as num_productos


FROM fabricante f, producto p
WHERE f.codigo = p.codigo_fabricante
GROUP BY f.nombre
HAVING num_productos >= 2;

17. Devuelve un listado con los nombres de los fabricantes y el número de


productos que tiene cada uno con un precio superior o igual a 220 €. No es
necesario mostrar el nombre de los fabricantes que no tienen productos que
cumplan la condición

SELECT *
FROM fabricante f, producto p
WHERE f.codigo = p.codigo_fabricante ;

SELECT f.nombre, COUNT(*)


FROM fabricante f, producto p
WHERE f.codigo = p.codigo_fabricante AND p.precio >= 220
GROUP BY f.nombre ;

18.Devuelve un listado con los nombres de los fabricantes donde la suma del precio
de todos sus productos es superior a 1000 €

SELECT f.nombre , SUM(p.precio) AS suma


FROM fabricante f, producto p
WHERE f.codigo = p.codigo_fabricante 
GROUP BY f.nombre
HAVING suma > 1000;

19. Devuelve un listado con el nombre del producto más caro que tiene cada
fabricante. El resultado debe tener tres columnas: nombre del producto, precio y
nombre del fabricante.
El resultado tiene que estar ordenado alfabéticamente de menor a mayor por el
nombre del fabricante.

SELECT f.nombre, p.nombre, MAX(p.precio) as max_precio


FROM producto p, fabricante f
WHERE p.codigo_fabricante = f.codigo
GROUP BY f.nombre
ORDER BY max_precio DESC;

También podría gustarte