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;