Una consulta dentro de otra
SQL · Unidad 9: Subconsultas
- Plan completo
- SQL
- 10 ejercicios
En la unidad 5 quisiste saber qué productos cuestan más que el promedio. WHERE precio > AVG(precio) no pasó, y el arreglo fue escribir a mano el 201.57. Ese número es una foto. En cuanto cambie un precio, el promedio será otro y la consulta seguirá comparando con el viejo.
La consulta que calcula el promedio ya la sabes escribir. Va entre paréntesis, en el sitio donde iba el número. Eso es una subconsulta, una consulta dentro de otra.
SELECT nombre, precio
FROM productos
WHERE precio > (
SELECT AVG(precio)
FROM productos
);Devuelve
| nombre | precio |
|---|---|
| Portátil | 899 |
| Tableta | 320 |
El resto de la explicación está en la lección, que es del plan completo.
Ejercicios de esta lección
Se hacen en la app, que los corrige al momento y explica por qué.
1. Opción múltiple
El Portátil baja de 899 a 499, y con él el promedio de la tienda, de 201.57 a 151.57. El Monitor cuesta 189. ¿Qué devuelve desde ese día cada versión, la del 201.57 escrito a mano y la de la subconsulta?
2. Ordena las líneas
¿Qué pedidos son más grandes que un pedido promedio? Ordena la consulta que da su número y su cantidad, del más grande al más pequeño. Sobran dos líneas.
3. Predice la salida
¿Qué cuesta más que un producto promedio de Audio? En Audio hay dos productos, los Audífonos, de 59.9, y el Parlante, de 74, que promedian 66.95. El Monitor cuesta 189, la Tableta 320 y el Portátil 899. Lo demás no llega a 50. ¿Qué devuelve esta consulta?
4. Ordena las líneas
¿Qué clientes de Lima son mayores que el cliente promedio de toda la tienda? Ordena la consulta que da su nombre y su edad, por nombre. Sobran dos líneas.
5. Predice la salida
¿De qué queda menos en el almacén? El Cable y el Parlante tienen
stock0. El que les sigue es el Portátil, con 3. ¿Qué devuelve esta consulta?6. Encuentra el bug
Alguien busca algo que cueste menos que cualquier equipo. Los equipos son el Portátil, de 899, y la Tableta, de 320. La consulta corre, y lo primero que ofrece es la Tableta. ¿Qué línea tiene el problema?
7. Opción múltiple
¿Cuál de estas subconsultas no puede devolver nunca más de una fila, entren los productos que entren en la tabla?
8. Encuentra el caso que falla
El letrero de la vitrina anuncia lo más caro de la tienda, que es el Portátil, de 899. Si varios productos comparten el precio más alto, tienen que salir todos. Alguien lo escribió con
ORDER BYyLIMIT 1. ¿Con cuál de estos cambios deja un producto fuera del letrero?9. Completa el código
Un cliente mira el Monitor, que es el producto 3, y pregunta qué hay por encima de ese precio. Completa la subconsulta para que devuelva un solo valor, el precio del Monitor.
10. Escribe el código
Lo que salió al principio, el Portátil y la Tableta, son los dos equipos. Cuestan tanto que suben el promedio de toda la tienda, y nada más lo alcanza. El dueño quiere la misma pregunta sin ellos. Escribe una consulta con dos columnas en este orden, el nombre y el precio de los productos que no son de la categoría
Equiposy cuestan más que el promedio de los que no son deEquipos. El más caro primero.
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.