Proyecto final: preguntas de negocio
Once módulos, un vocabulario completo, una base de datos que ya conoces de memoria. Hoy no hay teoría nueva: te ponemos en el lugar de quien tiene que sacarle respuestas de verdad a esta tienda. Cada pregunta de negocio de abajo se resuelve con una sola consulta — algunas evidentes, otras te van a hacer pensar un poco más.
El reto: responder a dirección con SQL
Imagina que trabajas en la tienda de este curso y el dueño te hace estas preguntas una detrás de otra. Escribe la consulta para cada una en el playground de abajo (el mismo para todas, así puedes ir probando y reescribiendo) y comprueba tu resultado.
Las preguntas
- "¿Cuántos clientes tenemos en cada ciudad?" — pista: GROUP BY.
- "Dame el nombre y el email de los clientes que nunca han comprado nada." — pista: LEFT JOIN + IS NULL, o EXISTS con NOT delante.
- "¿Cuáles son los 3 productos que más dinero han generado en total?" — pista: necesitas multiplicar precio × cantidad, JOIN entre pedidos y productos, GROUP BY, ORDER BY y LIMIT a la vez.
- "¿Qué cliente ha gastado más dinero en total en toda la tienda?" — la más difícil de las cuatro: combina tres tablas.
Si te atascas, construye la consulta por capas: primero un SELECT simple para comprobar que el JOIN te da las filas correctas, y añade GROUP BY, funciones de agregación y ORDER BY / LIMIT uno a uno, comprobando el resultado después de cada paso. Es exactamente así como se escriben consultas complejas en el mundo real — nadie las escribe perfectas a la primera.
Las soluciones (no mires antes de intentarlo)
Cuando lo hayas intentado por tu cuenta, compara con esto. No hay una única forma correcta de escribir cada consulta — si tu resultado coincide, vas bien, aunque tu SQL no sea exactamente igual línea por línea.
SELECT ciudad, COUNT(*) FROM clientes GROUP BY ciudad;
SELECT nombre, email FROM clientes c LEFT JOIN pedidos p ON c.id = p.cliente_id WHERE p.id IS NULL;
SELECT pr.nombre, SUM(pr.precio * p.cantidad) AS ingresos FROM pedidos p JOIN productos pr ON p.producto_id = pr.id GROUP BY pr.nombre ORDER BY ingresos DESC LIMIT 3;
SELECT c.nombre, SUM(pr.precio * p.cantidad) AS total FROM pedidos p JOIN clientes c ON p.cliente_id = c.id JOIN productos pr ON p.producto_id = pr.id GROUP BY c.nombre ORDER BY total DESC LIMIT 1;
Has terminado el track de SQL
Doce módulos, desde tu primer SELECT * hasta
combinar tres tablas con JOIN, GROUP BY y subconsultas a la vez. Esto no es
"SQL de juguete": es exactamente el vocabulario que se usa a diario para sacar
información de cualquier base de datos real, sea de una tienda, un banco o una
academia online como esta. Revisa tu perfil (arriba a la derecha) para ver los
logros que has desbloqueado por el camino.
Has completado los 12 módulos del track de SQL de Gráffica Academy.