Obtener órdenes con nombre de cliente y nombre de producto.
SELECT
o.OrdenID,
c.ClienteID AS Clientes,
p.Nombre AS Productos,
i.Total
FROM Ordenes o
JOIN Clientes c ON o.ClienteID = c.ClienteID
JOIN ordenitems i ON o.OrdenID = i.OrdenID
JOIN Productos p ON i.ProductoID = p.ProductoID;
SELECT c.ClienteID, c.Nombre, o.OrdenID
FROM Clientes c
LEFT JOIN Ordenes o ON c.ClienteID = o.ClienteID;
Mostrar monto total por producto vendido.
SELECT p.Nombre,
SUM(i.Total) AS TotalVendido
FROM Productos p
JOIN ordenitems i
ON p.ProductoID = i.ProductoID
GROUP BY p.Nombre;
SELECT ClienteID, SUM(Total) AS TotalGastado
FROM Ordenes
GROUP BY ClienteID;
SELECT ClienteID, COUNT(*) AS CantidadOrdenes
FROM Ordenes
GROUP BY ClienteID
HAVING COUNT(*) > 5;
SELECT ProductoID, AVG(Total) AS Promedio FROM ordenitems GROUP BY ProductoID HAVING AVG(Total) > 200;
SELECT *
FROM OrdenItems
WHERE Total > (SELECT AVG(Total) FROM OrdenItems);
SELECT *
FROM Ordenes o
WHERE Fecha = (
SELECT MAX(Fecha)
FROM Ordenes
WHERE ClienteID = o.ClienteID
);
SELECT *
FROM Ordenes
WHERE Total > (SELECT AVG(Total) FROM Ordenes);
WITH Ventas AS (
SELECT
DATE_FORMAT(Fecha, '%Y-%m-01') AS Mes,
SUM(Total) AS TotalMes
FROM Ordenes
GROUP BY DATE_FORMAT(Fecha, '%Y-%m-01')
)
SELECT * FROM Ventas;
SELECT ProductoID, SUM(Cantidad) AS TotalCantidad
FROM ordenitems
GROUP BY ProductoID
ORDER BY TotalCantidad DESC
LIMIT 5;
WITH OrdenesConAcumulado AS (
SELECT Fecha, Total,
SUM(Total) OVER (ORDER BY Fecha) AS Acumulado
FROM Ordenes
)
SELECT * FROM OrdenesConAcumulado;