Encuentra el fallo: los clientes sin email
FácilLa consulta debería mostrar el nombre de los clientes que no tienen email, pero no devuelve ninguna fila. Corrígela.
25 ejercicios de SQL de los módulos de Bases de Datos. Consultas sobre bases de datos de ejemplo (una tienda, una biblioteca…): SELECT, JOIN, GROUP BY, subconsultas, INSERT, UPDATE, DELETE, vistas y disparadores.
Cada ejercicio trae enunciado, pistas, solución y pruebas automáticas: escribes el código aquí mismo, lo ejecutas y ves al momento si es correcto. Tu progreso se guarda en el tema del que sale cada ejercicio.
La consulta debería mostrar el nombre de los clientes que no tienen email, pero no devuelve ninguna fila. Corrígela.
Se quieren los productos de las categorías Periféricos o Audio que cuesten menos de 50 €, ordenados por nombre. La consulta devuelve también el teclado mecánico, que cuesta 89,90 €. Corrígela.
Se quiere la media de unidades por pedido. La consulta da 2, pero entre los 5 pedidos suman 13 unidades. Corrígela para que dé el resultado exacto.
La consulta cuenta los pedidos de cada cliente, incluidos los que no tienen ninguno. Pero Marta Díaz, que nunca ha comprado, aparece con 1 pedido. Corrígela.
Se quiere, para cada cliente, cuántos pedidos tiene entregados, con 0 para los que no tienen ninguno, ordenado por id de cliente. Lucía y Marta no aparecen. Corrígela sin quitar el LEFT JOIN.
La tabla Bajas guarda los emails de quienes se han dado de baja del boletín; uno se registró vacío (NULL). Se quiere el nombre de los clientes con email que siguen suscritos, por orden alfabético. La consulta no devuelve nada. Corrígela.
Hay que poner a 0 el stock de los productos de la categoría Audio, pero al ejecutar la sentencia no cambia ninguna fila. Corrígela.
Al enviar el pedido 3 hay que descontar del stock las unidades de cada uno de sus productos. Tras ejecutar la sentencia, el stock de los productos que no están en ese pedido queda vacío (NULL). Corrígela para que solo cambien los productos del pedido.
El disparador debería restar del stock del producto vendido las unidades de cada nueva línea de pedido. Al insertar una línea con 5 ratones, baja el stock de todos los productos. Corrígelo (el INSERT de prueba se queda igual).
Muestra el nombre y el precio de los productos que cuestan menos de 50 €, ordenados de más barato a más caro.
Muestra el nombre y la ciudad de los clientes que no tienen email registrado.
Muestra los productos cuyo nombre contiene la palabra «portátil» o empieza por «Disco», sin distinguir mayúsculas. Devuelve solo el nombre.
Da de alta el producto 9: «Alfombrilla XL», categoría «Periféricos», 14.95 €, 80 unidades, proveedor «Logitech», fecha de alta 2024-07-01.
Para cada categoría muestra: número de productos, precio mínimo, precio máximo y stock total, ordenado por categoría.
Lista cada pedido con su número, la fecha, el nombre del cliente y la ciudad, ordenado por fecha.
Calcula el importe total de cada pedido (suma de cantidad × precio unitario de sus líneas), mostrando el número de pedido y el importe redondeado a 2 decimales, del mayor al menor.
Muestra el nombre de los clientes que no tienen ningún pedido. Resuélvelo con LEFT JOIN o con NOT EXISTS.
Obtén una lista única de «nombres» que aparecen como ciudad de algún cliente o como proveedor de algún producto, ordenada alfabéticamente.
Sube un 5 % el precio de los productos del proveedor «Samsung», redondeando a 2 decimales.
Crea la vista StockBajo con el nombre, la categoría y el stock de los productos con menos de 25 unidades.
Muestra el nombre, la categoría y el precio de los productos cuyo precio supera la media de su propia categoría.
Muestra el nombre del cliente que más ha gastado en total y su gasto (2 decimales). Si hubiera empate basta con uno.
Muestra las categorías cuyo importe vendido supera los 100 €, con el importe (2 decimales), de mayor a menor.
Elimina los pedidos en estado «pendiente» de clientes de Madrid. Recuerda borrar antes sus líneas de DetallePedido para no dejar huérfanos.
Crea la tabla HistorialPrecios(producto_id, precio_anterior, precio_nuevo) y un trigger que inserte una fila en ella cada vez que cambie el precio de un producto. Pruébalo subiendo 10 € el precio del producto 3.