1.
Operadores Lógicos:
• Buscar compras que se hayan realizado en febrero y que tengan un descuento
mayor al 2.5%
SELECT *
FROM compra
WHERE fecha BETWEEN '2025-02-01' AND '2025-02-28'
AND descuento > 2.5;
• Mostrar usuarios que tienen un rol de Profesor o Empleado
SELECT *
FROM usuario
WHERE id_rol IN (4, 6);
• Buscar facturas que fueron emitidas en el mes de marzo y cuyo total es mayor
a 15,000
SELECT *
FROM factura
WHERE fecha_emicion BETWEEN '2025-03-01' AND '2025-03-31'
AND id_compra IN (SELECT id_compra FROM compra WHERE total > 15000);
2. Funciones de Agregado:
• Calcular el total de ventas (total de las compras) realizadas por cada usuario
SELECT id_usuario, SUM(total) AS total_ventas
FROM compra
GROUP BY id_usuario;
• Promedio de los descuentos aplicados en las compras
SELECT AVG(descuento) AS promedio_descuento
FROM compra;
• Cantidad de compras por cada restaurante
SELECT [Link] AS restaurante, COUNT(c.id_compra) AS cantidad_compras
FROM compra c
JOIN plato p ON c.id_plato = p.id_plato
JOIN restaurante r ON p.id_restaurante = r.id_restaurante
GROUP BY [Link];
3. Funciones de Agrupación:
• Encontrar el total vendido por cada método de pago
SELECT [Link], SUM([Link]) AS total_vendido
FROM compra c
JOIN metodo_pago mp ON c.id_metodo_pago = mp.id_metodo_pago
GROUP BY [Link];
• Contar cuántas compras se han realizado con un descuento superior a 3%
SELECT COUNT(*) AS compras_con_descuento_alto
FROM compra
WHERE descuento > 3;
4. Cláusulas JOIN:
• Buscar las compras junto con la información del usuario y el plato comprado
SELECT [Link] AS usuario, [Link] AS plato, [Link]
FROM compra c
JOIN usuario u ON c.id_usuario = u.id_usuario
JOIN plato p ON c.id_plato = p.id_plato;
• Obtener la lista de facturas junto con el nombre del restaurante y los platos
vendidos
SELECT f.id_factura, [Link] AS restaurante, [Link] AS plato
FROM factura f
JOIN compra c ON f.id_compra = c.id_compra
JOIN plato p ON c.id_plato = p.id_plato
JOIN restaurante r ON p.id_restaurante = r.id_restaurante;
5. Cláusula GROUP BY y HAVING:
• Mostrar el total de ventas por restaurante, pero solo aquellos con ventas
mayores a 50,000
SELECT [Link], SUM([Link]) AS total_ventas
FROM compra c
JOIN plato p ON c.id_plato = p.id_plato
JOIN restaurante r ON p.id_restaurante = r.id_restaurante
GROUP BY [Link]
HAVING SUM([Link]) > 50000;
• Listar los usuarios que han realizado más de 2 compras y el total de sus
compras
SELECT [Link], COUNT(c.id_compra) AS cantidad_compras, SUM([Link]) AS total_compras
FROM compra c
JOIN usuario u ON c.id_usuario = u.id_usuario
GROUP BY [Link]
HAVING COUNT(c.id_compra) > 2;
6. Subconsultas:
• Buscar los usuarios que han realizado una compra con un descuento mayor al
3%
SELECT nombre
FROM usuario
WHERE id_usuario IN (
SELECT id_usuario
FROM compra
WHERE descuento > 3
);
• Encontrar el plato con el precio más alto de cada restaurante
SELECT [Link] AS restaurante, [Link] AS plato, MAX([Link]) AS precio_maximo
FROM plato p
JOIN restaurante r ON p.id_restaurante = r.id_restaurante
GROUP BY [Link];
7. Cláusula ORDER BY:
• Ordenar las compras por total en orden descendente
SELECT *
FROM compra
ORDER BY total DESC;
• Listar los platos por precio de menor a mayor
SELECT nombre, precio
FROM plato
ORDER BY precio ASC;
8. Operadores de Comparación:
• Buscar los platos que tienen un precio mayor a 15,000
SELECT *
FROM plato
WHERE precio > 15000;
• Mostrar las compras realizadas por el usuario con ID 14
SELECT *
FROM compra
WHERE id_usuario = 14;
9. Operadores BETWEEN y IN:
• Mostrar las facturas emitidas en febrero de 2025
SELECT *
FROM factura
WHERE fecha_emicion BETWEEN '2025-02-01' AND '2025-02-28';
• Obtener el total de las compras que fueron pagadas con tarjeta de crédito o
en efectivo
SELECT *
FROM compra
WHERE id_metodo_pago IN (1, 2);
10. Actualización de Datos:
• Actualizar el precio de un plato específico
UPDATE plato
SET precio = 15000
WHERE id_plato = 1;
• Aplicar un descuento de 10% a todas las compras realizadas en febrero
UPDATE compra
SET descuento = 10
WHERE fecha BETWEEN '2025-02-01' AND '2025-02-28';