Hola a todos, hoy os dejo ejercicios propuestos y resueltos de la base de datos de tienda en oracle.
Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.
Aquí te dejo la base de datos de tienda que debes importar.
Si no tienes instalado oracle database XE, os dejo algunos manuales:
También puedes usar Oracle Live.
Al final de cada ejercicio, os indico el resultado esperado de la consulta. Si hay muchos datos, indico el numero de filas.
Os dejo el modelo Entidad – Relación de la base de datos:

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

|
1 |
select nombre from producto; |
2. Lista los nombres y los precios de todos los productos de la tabla producto.
Resultado esperado:

|
1 |
select nombre, precio from producto; |
3. Lista todas las columnas de la tabla producto.
Resultado esperado:

|
1 |
select * from producto; |
4. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses (USD).
Resultado esperado:

|
1 |
select nombre, precio as euros, precio * 1.05 as dolares from producto; |
5. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses (USD). Utiliza los siguientes alias para las columnas: nombre de producto, euros, dólares.
Resultado esperado:

|
1 |
select nombre as "nombre producto", precio as euros, precio * 1.05 as dolares from producto; |
6. Lista los nombres y los precios de todos los productos de la tabla producto, convirtiendo los nombres a mayúscula.
Resultado esperado:

|
1 |
select upper(nombre) as "nombre producto" from producto; |
7. Lista los nombres y los precios de todos los productos de la tabla producto, convirtiendo los nombres a minúscula.
Resultado esperado:

|
1 |
select lower(nombre) as "nombre producto" from producto; |
8. Lista el nombre de todos los fabricantes en una columna, y en otra columna obtenga en mayúsculas los dos primeros caracteres del nombre del fabricante.
Resultado esperado:

|
1 |
select nombre, upper(substr(nombre, 0, 2)) as codigo from fabricante; |
9. Lista los nombres y los precios de todos los productos de la tabla producto, redondeando el valor del precio.
Resultado esperado:

|
1 |
select nombre, round(precio) as redondeado from producto; |
10. Lista los nombres y los precios de todos los productos de la tabla producto, truncando el valor del precio para mostrarlo sin ninguna cifra decimal.
Resultado esperado:

|
1 |
select nombre, trunc(precio) as truncado from producto; |
11. Lista el código de los fabricantes que tienen productos en la tabla producto.
Resultado esperado:

|
1 |
select codigo_fabricante from producto; |
12. Lista el código de los fabricantes que tienen productos en la tabla producto, eliminando los códigos que aparecen repetidos.
Resultado esperado:

|
1 |
select distinct codigo_fabricante from producto; |
13. Lista los nombres de los fabricantes ordenados de forma ascendente.
Resultado esperado:

|
1 |
select nombre from fabricante order by nombre; |
14. Lista los nombres de los fabricantes ordenados de forma descendente.
Resultado esperado:

|
1 |
select nombre from fabricante order by nombre desc; |
15. 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.
Resultado esperado:

|
1 |
select nombre from producto order by nombre, precio desc; |
16. Devuelve una lista con las 5 primeras filas de la tabla fabricante.
Resultado esperado:

|
1 |
select * from producto where rownum <= 5; |
17. Devuelve una lista con 2 filas a partir de la cuarta fila de la tabla fabricante. La cuarta fila también se debe incluir en la respuesta.
Resultado esperado:

|
1 2 3 |
select codigo, nombre from (select rownum as rn, codigo, nombre from fabricante) where rn >= 4 and rn <= 5; |
18. Lista el nombre y el precio del producto más barato. (Utilice solamente las cláusulas ORDER BY y ROWNUM).
Resultado esperado:

|
1 2 3 |
select nombre, precio from (select nombre, precio from producto order by precio) where rownum <=1; |
19. Lista el nombre y el precio del producto más caro. (Utilice solamente las cláusulas ORDER BY y ROWNUM).
Resultado esperado:

|
1 2 3 |
select nombre, precio from (select nombre, precio from producto order by precio desc) where rownum <=1; |
20. Lista el nombre de todos los productos del fabricante cuyo código de fabricante es igual a 2.
Resultado esperado:

|
1 |
select nombre from producto where codigo_fabricante = 2; |
21. Lista el nombre de los productos que tienen un precio menor o igual a 120€.
Resultado esperado:

|
1 |
select nombre from producto where precio <= 120; |
22. Lista el nombre de los productos que tienen un precio mayor o igual a 400€.
Resultado esperado:

|
1 |
select nombre from producto where precio >= 400; |
23. Lista el nombre de los productos que no tienen un precio mayor o igual a 400€.
Resultado esperado:

|
1 |
select nombre from producto where not precio >= 400; |
24. Lista todos los productos que tengan un precio entre 80€ y 300€. Sin utilizar el operador BETWEEN.
Resultado esperado:

|
1 |
select nombre from producto where precio >= 80 and precio <= 300; |
25. Lista todos los productos que tengan un precio entre 60€ y 200€. Utilizando el operador BETWEEN.
Resultado esperado:

|
1 |
select nombre from producto where precio between 60 and 200; |
26. Lista todos los productos que tengan un precio mayor que 200€ y que el código de fabricante sea igual a 6.
Resultado esperado:

|
1 |
select nombre from producto where precio > 200 and codigo_fabricante = 6; |
27. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Sin utilizar el operador IN.
Resultado esperado:

|
1 |
select * from producto where codigo_fabricante = 1 or codigo_fabricante = 3 or codigo_fabricante = 5; |
28. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Utilizando el operador IN.
Resultado esperado:

|
1 |
select * from producto where codigo_fabricante IN (1,3,5); |
29. Lista el nombre y el precio de los productos en céntimos (Habrá que multiplicar por 100 el valor del precio). Cree un alias para la columna que contiene el precio que se llame céntimos.
Resultado esperado:

|
1 |
select nombre, precio * 100 as centimos from producto; |
30. Lista los nombres de los fabricantes cuyo nombre empiece por la letra S.
Resultado esperado:

|
1 |
select nombre from fabricante where upper(nombre) LIKE 'S%'; |
31. Lista los nombres de los fabricantes cuyo nombre termine por la vocal e.
Resultado esperado:

|
1 |
select nombre from fabricante where lower(nombre) LIKE '%e'; |
32. Lista los nombres de los fabricantes cuyo nombre contenga el carácter w.
Resultado esperado:

|
1 |
select nombre from fabricante where lower(nombre) LIKE '%w%'; |
33. Lista los nombres de los fabricantes cuyo nombre sea de 4 caracteres.
Resultado esperado:

|
1 |
select nombre from fabricante where lower(nombre) LIKE '____'; |
34. Devuelve una lista con el nombre de todos los productos que contienen la cadena Portátil en el nombre.
Resultado esperado:

|
1 |
select nombre from producto where lower(nombre) LIKE '%portátil%'; |
35. Devuelve una lista con el nombre de todos los productos que contienen la cadena Monitor en el nombre y tienen un precio inferior a 215 €.
Resultado esperado:

|
1 |
select nombre from producto where lower(nombre) LIKE '%monitor%' and precio < 215; |
36. Lista el nombre y el precio de todos los productos que tengan un precio mayor o igual a 180€. Ordene el resultado en primer lugar por el precio (en orden descendente) y en segundo lugar por el nombre (en orden ascendente).
Resultado esperado:

|
1 |
select nombre, precio from producto where precio >= 180 order by precio desc, nombre; |
37. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los productos de la base de datos.
Resultado esperado:

|
1 2 3 |
select p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo; |
38. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los productos de la base de datos. Ordene el resultado por el nombre del fabricante, por orden alfabético.
Resultado esperado:

|
1 2 3 4 |
select p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo order by f.nombre; |
39. Devuelve una lista con el código del producto, nombre del producto, código del fabricante y nombre del fabricante, de todos los productos de la base de datos.
Resultado esperado:

|
1 2 3 |
select p.codigo, p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo; |
40. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más barato.
Resultado esperado:

|
1 2 3 4 |
select p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio = (select min(precio) from producto); |
41. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más caro.
Resultado esperado:

|
1 2 3 4 |
select p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio = (select max(precio) from producto); |
42. Devuelve una lista de todos los productos del fabricante Lenovo.
Resultado esperado:

|
1 2 3 4 |
select p.* from producto p, fabricante f where p.codigo_fabricante = f.codigo and upper(f.nombre) = 'LENOVO'; |
43. Devuelve una lista de todos los productos del fabricante Crucial que tengan un precio mayor que 200€.
Resultado esperado:

|
1 2 3 4 |
select p.* from producto p, fabricante f where p.codigo_fabricante = f.codigo and upper(f.nombre) = 'CRUCIAL' and p.precio > 200; |
44. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate. Sin utilizar el operador IN.
Resultado esperado:

|
1 2 3 4 |
select p.* from producto p, fabricante f where p.codigo_fabricante = f.codigo and (upper(f.nombre) = 'ASUS' or upper(f.nombre) = 'HEWLETT-PACKARDY' or upper(f.nombre) = 'SEAGATE'); |
45. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate. Utilizando el operador IN.
Resultado esperado:

|
1 2 3 4 |
select p.* from producto p, fabricante f where p.codigo_fabricante = f.codigo and upper(f.nombre) IN ('ASUS','HEWLETT-PACKARDY','SEAGATE'); |
46. Devuelve un listado con el nombre y el precio de todos los productos de los fabricantes cuyo nombre termine por la vocal e.
Resultado esperado:

|
1 2 3 4 |
select p.nombre, p.precio from producto p, fabricante f where p.codigo_fabricante = f.codigo and upper(f.nombre) LIKE '%E'; |
47. Devuelve un listado con el nombre y el precio de todos los productos cuyo nombre de fabricante contenga el carácter w en su nombre.
Resultado esperado:

|
1 2 3 4 |
select p.nombre, p.precio from producto p, fabricante f where p.codigo_fabricante = f.codigo and upper(f.nombre) LIKE '%W%'; |
48. Devuelve un listado con el nombre de producto, precio y nombre de fabricante, de todos los productos que tengan un precio mayor o igual a 180€. Ordene el resultado en primer lugar por el precio (en
orden descendente) y en segundo lugar por el nombre (en orden ascendente)
Resultado esperado:

|
1 2 3 4 5 |
select p.nombre, p.precio, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio >= 180 order by p.precio desc, p.nombre; |
49. Devuelve un listado con el código y el nombre de fabricante, solamente de aquellos fabricantes que tienen productos asociados en la base de datos.
Resultado esperado:

|
1 2 3 |
select distinct f.codigo, f.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo; |
50. Devuelve un listado de todos los fabricantes que existen en la base de datos, junto con los productos que tiene cada uno de ellos. El listado deberá mostrar también aquellos fabricantes que no tienen productos asociados.
Resultado esperado:

|
1 2 |
select f.nombre, p.nombre, p.precio from fabricante f LEFT JOIN producto p on f.codigo = p.codigo_fabricante; |
51. Devuelve un listado donde sólo aparezcan aquellos fabricantes que no tienen ningún producto asociado.
Resultado esperado:

|
1 2 3 |
select f.nombre from fabricante f LEFT JOIN producto p on f.codigo = p.codigo_fabricante where p.nombre is null; |
52. ¿Pueden existir productos que no estén relacionados con un fabricante? Justifica tu respuesta.
En este caso no, ya que la representación del modelo indica que es 1:N, que significa que siempre debe estar un producto asociado a un fabricante y que varios fabricantes pueden tener varios productos.
53. Calcula el número total de productos que hay en la tabla productos.
Resultado esperado:

|
1 |
select count(*) from producto; |
54. Calcula el número total de fabricantes que hay en la tabla fabricante.
Resultado esperado:

|
1 |
select count(*) from fabricante; |
55. Calcula el número de valores distintos de código de fabricante aparecen en la tabla productos.
Resultado esperado:

|
1 |
select count(distinct codigo_fabricante) from producto; |
56. Calcula la media del precio de todos los productos.
Resultado esperado:

|
1 |
select avg(precio) from producto; |
57. Calcula el precio más barato de todos los productos.
Resultado esperado:

|
1 |
select min(precio) from producto; |
58. Calcula el precio más caro de todos los productos.
Resultado esperado:

|
1 |
select max(precio) from producto; |
59. Lista el nombre y el precio del producto más barato.
Resultado esperado:

|
1 2 |
select nombre, precio from producto where precio = (select min(precio) from producto); |
60. Lista el nombre y el precio del producto más caro.
Resultado esperado:

|
1 2 |
select nombre, precio from producto where precio = (select max(precio) from producto); |
61. Calcula la suma de los precios de todos los productos.
Resultado esperado:

|
1 |
select sum(precio) from producto; |
62. Calcula el número de productos que tiene el fabricante Asus.
Resultado esperado:

|
1 2 3 |
select count(*) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='ASUS'); |
63. Calcula la media del precio de todos los productos del fabricante Asus.
Resultado esperado:

|
1 2 3 |
select avg(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='ASUS'); |
64. Calcula el precio más barato de todos los productos del fabricante Asus.
Resultado esperado:

|
1 2 3 |
select min(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='ASUS'); |
65. Calcula el precio más caro de todos los productos del fabricante Asus.
Resultado esperado:

|
1 2 3 |
select max(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='ASUS'); |
66. Calcula la suma de todos los productos del fabricante Asus.
Resultado esperado:

|
1 2 3 |
select sum(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='ASUS'); |
67. Muestra el precio máximo, precio mínimo, precio medio y el número total de productos que tiene el fabricante Crucial.
Resultado esperado:

|
1 2 3 |
select max(precio), min(precio), avg(precio), count(*) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='CRUCIAL'); |
68. Muestra el número total de productos que tiene cada uno de los fabricantes.El listado también debe incluir los fabricantes que no tienen ningún producto. El resultado mostrará dos columnas, una con el nombre del fabricante y otra con el número de productos que tiene. Ordene el resultado descendentemente por el número de productos.
Resultado esperado:

|
1 2 3 4 |
select f.nombre, count(p.codigo) as total from fabricante f LEFT JOIN producto p on f.codigo = p.codigo_fabricante group by f.nombre order by total desc; |
69. Muestra el precio máximo, precio mínimo y precio medio de los productos de cada uno de los fabricantes. El resultado mostrará el nombre del fabricante junto con los datos que se solicitan.
Resultado esperado:

|
1 2 3 4 |
select f.nombre, min(precio) as minimo, max(precio) as maximo, avg(precio) as media from fabricante f, producto p where f.codigo = p.codigo_fabricante group by f.nombre; |
70. Muestra el precio máximo, precio mínimo, precio medio y el número total de productos de los fabricantes que tienen un precio medio superior a 200€. No es necesario mostrar el nombre del fabricante, con el código del fabricante es suficiente.
Resultado esperado:

|
1 2 3 4 |
select codigo_fabricante, min(precio) as minimo, max(precio) as maximo, avg(precio) as media, count(*) as total from producto group by codigo_fabricante having avg(precio) > 200; |
71. Muestra el nombre de cada fabricante, junto con el precio máximo, precio mínimo, precio medio y el número total de productos de los fabricantes que tienen un precio medio superior a 200€. Es necesario mostrar el nombre del fabricante.
Resultado esperado:

|
1 2 3 4 5 |
select f.nombre, min(precio) as minimo, max(precio) as maximo, avg(precio) as media, count(*) as total from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre having avg(precio) > 200; |
72. Calcula el número de productos que tienen un precio mayor o igual a 180€.
Resultado esperado:

|
1 2 3 |
select count(*) as total from producto p where p.precio >= 180; |
73. Calcula el número de productos que tiene cada fabricante con un precio mayor o igual a 180€.
Resultado esperado:

|
1 2 3 4 |
select f.nombre, count(*) as total from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio >= 180 group by f.nombre; |
74. Lista el precio medio de los productos de cada fabricante, mostrando solamente el código del fabricante.
Resultado esperado:

|
1 2 3 |
select p.codigo_fabricante, avg(precio) as media from producto p group by p.codigo_fabricante; |
75. Lista el precio medio los productos de cada fabricante, mostrando solamente el nombre del fabricante.
Resultado esperado:

|
1 2 3 4 |
select f.nombre, avg(precio) as media from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre; |
76. Lista los nombres de los fabricantes cuyos productos tienen un precio medio mayor o igual a 150€.
Resultado esperado:

|
1 2 3 4 5 |
select f.nombre, avg(precio) as media from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre having avg(precio) >= 150; |
77. Devuelve un listado con los nombres de los fabricantes que tienen 2 o más productos.
Resultado esperado:

|
1 2 3 4 5 |
select f.nombre, count(*) as total from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre having count(*) >= 2; |
78. 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. Ejemplo del resultado esperado:
nombre total
Lenovo 2
Asus 1
Crucial 1
Resultado esperado:

|
1 2 3 4 5 |
select f.nombre, count(*) as total from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio >= 220 group by f.nombre order by total desc; |
79. 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 €. El listado debe mostrar el nombre de todos los fabricantes, es decir, si hay algún fabricante que no tiene productos con un precio superior o igual a 220€ deberá aparecer en el listado con un valor igual a 0 en el número de productos. Ejemplo del resultado esperado:
nombre total
Lenovo 2
Crucial 1
Asus 1
Huawei 0
Samsung 0
Gigabyte 0
Hewlett-Packard 0
Xiaomi 0
Seagate 0
Resultado esperado:

|
1 2 3 4 5 |
select distinct f.nombre, (select count(*) from producto where codigo_fabricante = p.codigo_fabricante and precio >= 220) as total from fabricante f LEFT JOIN producto p on p.codigo_fabricante = f.codigo order by total desc; |
80. Devuelve un listado con los nombres de los fabricantes donde la suma del precio de todos sus productos es superior a 1000 €.
Resultado esperado:

|
1 2 3 4 5 |
select f.nombre, sum(p.precio) as media from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre having sum(p.precio) > 1000; |
81. 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.
Resultado esperado:

|
1 2 3 4 5 6 7 |
select f.nombre, p.precio, p.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio = (select max(precio) from producto where codigo_fabricante = p.codigo_fabricante) order by f.nombre; |
82. Devuelve todos los productos del fabricante Lenovo. (Sin utilizar INNER JOIN).
Resultado esperado:

|
1 2 3 |
select * from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO'); |
83. Devuelve todos los datos de los productos que tienen el mismo precio que el producto más caro del fabricante Lenovo. (Sin utilizar INNER JOIN).
Resultado esperado:

|
1 2 3 4 5 6 |
select * from producto where precio = (select max(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO')); |
84. Lista el nombre del producto más caro del fabricante Lenovo.
Resultado esperado:

|
1 2 3 4 5 6 7 8 9 |
select nombre from producto where precio = (select max(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO')) and codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO'); |
85. Lista el nombre del producto más barato del fabricante Hewlett-Packard.
Resultado esperado:

|
1 2 3 4 5 6 7 8 9 |
select nombre from producto where precio = (select min(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'HEWLETT-PACKARD')) and codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'HEWLETT-PACKARD'); |
86. Devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más caro del fabricante Lenovo.
Resultado esperado:

|
1 2 3 4 5 6 |
select * from producto where precio >= (select max(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO')); |
87. Lista todos los productos del fabricante Asus que tienen un precio superior al precio medio de todos sus productos.
Resultado esperado:

|
1 2 3 4 5 6 7 8 9 10 |
select * from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'ASUS') and precio > (select avg(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'ASUS')); |
88. Subconsultas (En la cláusula HAVING). Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo número de productos que el fabricante Lenovo.
Resultado esperado:

|
1 2 3 4 5 6 7 8 9 |
select f.nombre, count(*) from producto p, fabricante f where p.codigo_fabricante = f.codigo group by f.nombre having count(*) = (select count(*) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre)='LENOVO')); |
89. Devuelve el producto más caro que existe en la tabla producto sin hacer uso de MAX, ORDER BY ni LIMIT.
Resultado esperado:

|
1 |
select * from producto where precio >= ALL(select precio from producto); |
90. Devuelve el producto más barato que existe en la tabla producto sin hacer uso de MIN, ORDER BY ni LIMIT.
Resultado esperado:

|
1 |
select * from producto where precio <= ALL(select precio from producto); |
91. Devuelve los nombres de los fabricantes que tienen productos asociados. (Utilizando ALL o ANY).
Resultado esperado:

|
1 |
select nombre from fabricante where codigo = ANY(select codigo_fabricante from producto); |
92. Devuelve los nombres de los fabricantes que no tienen productos asociados. (Utilizando ALL o ANY).
Resultado esperado:

|
1 |
select nombre from fabricante where codigo <> ALL(select codigo_fabricante from producto); |
93. Devuelve los nombres de los fabricantes que tienen productos asociados. (Utilizando IN o NOT IN).
Resultado esperado:

|
1 |
select * from fabricante where codigo IN (select codigo_fabricante from producto); |
94. Devuelve los nombres de los fabricantes que no tienen productos asociados. (Utilizando IN o NOT IN).
Resultado esperado:

|
1 |
select * from fabricante where codigo NOT IN (select codigo_fabricante from producto); |
95. Devuelve los nombres de los fabricantes que tienen productos asociados. (Utilizando EXISTS o NOT EXISTS).
Resultado esperado:

|
1 2 3 |
select * from fabricante f where EXISTS (select codigo_fabricante from producto where codigo_fabricante = f.codigo); |
96. Devuelve los nombres de los fabricantes que no tienen productos asociados. (Utilizando EXISTS o NOT EXISTS).
Resultado esperado:

|
1 2 3 |
select * from fabricante f where NOT EXISTS (select codigo_fabricante from producto where codigo_fabricante = f.codigo); |
97. Lista el nombre de cada fabricante con el nombre y el precio de su producto más caro.
Resultado esperado:

|
1 2 3 4 |
select f.nombre, p.precio, p.nombre from producto p, fabricante f where p.codigo_fabricante = f.codigo and p.precio = (select max(precio) from producto where codigo_fabricante = p.codigo_fabricante); |
98. Devuelve un listado de todos los productos que tienen un precio mayor o igual a la media de todos los productos de su mismo fabricante.
Resultado esperado:

|
1 2 3 |
select * from producto p where precio >= (select avg(precio) from producto where codigo_fabricante = p.codigo_fabricante); |
99. Lista el nombre del producto más caro del fabricante Lenovo.
Resultado esperado:

|
1 2 3 4 5 6 7 8 9 |
select nombre from producto where precio = (select max(precio) from producto where codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO')) and codigo_fabricante = (select codigo from fabricante where upper(nombre) = 'LENOVO'); |
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta