La lista de sumas totales de cada cliente(Distribuidoras):
Código SQL:
Ver originalSELECT SUM(Q.cantidad * P.precio) AS Total, D.nombre AS Distri
FROM Distribuidora D INNER JOIN (Venta V INNER JOIN (Venta_Detalle Q INNER JOIN
Producto P ON Q.produc_id = P.produc_id)
ON V.venta_id = Q.venta_id) ON D.distribuidora_id = V.distribuidora_id
WHERE MONTH(V.fecha) IN ('01', '02', '03')
GROUP BY D.nombre
El comando que saca su valor máximo:
Código SQL:
Ver originalSELECT MAX(Totales.Total) AS Maximo
FROM (SELECT SUM(Q.cantidad * P.precio) AS Total, D.nombre AS Distri
FROM Distribuidora D INNER JOIN (Venta V INNER JOIN (Venta_Detalle Q INNER JOIN
Producto P ON Q.produc_id = P.produc_id)
ON V.venta_id = Q.venta_id) ON D.distribuidora_id = V.distribuidora_id
WHERE MONTH(V.fecha) IN ('01', '02', '03')
GROUP BY D.nombre) AS Totales
y si lo unimos para sacar su valor máximo y el nombre de su distribuidora, lo hice así:
Código SQL:
Ver originalSELECT Totales.Distri AS 'Mejor cliente',TMaximo.Maximo AS 'Suma de totales'
FROM (SELECT MAX(Totales.Total) AS Maximo
FROM (SELECT SUM(Q.cantidad * P.precio) AS Total, D.nombre AS Distri
FROM Distribuidora D INNER JOIN (Venta V INNER JOIN (Venta_Detalle Q INNER JOIN
Producto P ON Q.produc_id = P.produc_id)
ON V.venta_id = Q.venta_id) ON D.distribuidora_id = V.distribuidora_id
WHERE MONTH(V.fecha) IN ('01', '02', '03')
GROUP BY D.nombre) AS Totales) AS TMaximo,
(SELECT SUM(Q.cantidad * P.precio) AS Total, D.nombre AS Distri
FROM Distribuidora D INNER JOIN (Venta V INNER JOIN (Venta_Detalle Q INNER JOIN
Producto P ON Q.produc_id = P.produc_id)
ON V.venta_id = Q.venta_id) ON D.distribuidora_id = V.distribuidora_id
WHERE MONTH(V.fecha) IN ('01', '02', '03')
GROUP BY D.nombre) AS Totales
WHERE Totales.Total = TMaximo.Maximo
Y me funcionó!
Aunque parece largo, quisiera saber si tienen otra idea para simplificar el último comando. Salu2!