Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

porcentajes

Hola, les paso esta inquietud. Para mi esta mal conceptualmente el tema de los porcentajes en los ejemplos, si bien se utilizan para mostrar los comandos y sentencia de SQL, el resultado es incompleto en algunos casos.
EJ si el max posible a vender es 9500 y vendi por 17528, no vendi un 45% mas, vendi por un 84% mas de lo permitido.
en el ejemplo estaria faltando la venta del mes 1-2018

saludos

SELECT A.DNI, A.NOMBRE, A.MES_AÑO,
A.CANTIDAD_VENDIDA - A.CANTIDAD_MAXIMA AS DIFERENCIA,
CASE
WHEN (A.CANTIDAD_VENDIDA - A.CANTIDAD_MAXIMA) <= 0 THEN 'Venta Válida'
ELSE 'Venta Inválida'
END AS STATUS_VENTA, ROUND((1 - (A.CANTIDAD_MAXIMA/A.CANTIDAD_VENDIDA)) * 100,2) AS PORCENTAJE
FROM(
SELECT F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y") AS MES_AÑO,
SUM(IFa.CANTIDAD) AS CANTIDAD_VENDIDA,
MAX(VOLUMEN_DE_COMPRA)/10 AS CANTIDAD_MAXIMA
FROM facturas F
INNER JOIN
items_facturas IFa
ON F.NUMERO = IFa.NUMERO
INNER JOIN
tabla_de_clientes TC
ON TC.DNI = F.DNI
GROUP BY
F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y"))A
WHERE (A.CANTIDAD_MAXIMA - A.CANTIDAD_VENDIDA) < 0 AND ROUND((1 - (A.CANTIDAD_MAXIMA/A.CANTIDAD_VENDIDA)) * 100,2) > 50
AND A.MES_AÑO LIKE "%2018";

esta es la consulta que usé :

SELECT A.DNI, A.NOMBRE, A.MES_AÑO, A.cantidad_maxima, a.cantidad_vendida,
A.CANTIDAD_VENDIDA - A.CANTIDAD_MAXIMA AS DIFERENCIA, round((a.cantidad_maxima * (A.CANTIDAD_vendida/A.CANTIDAD_maxima)),1) as comparativa,
CASE
WHEN (A.CANTIDAD_maxima - A.CANTIDAD_vendida) > 0 THEN 'Venta Válida'
ELSE 'Venta Inválida'
END AS STATUS_VENTA, ROUND(((A.CANTIDAD_vendida/A.CANTIDAD_maxima)-1) * 100,3) AS PORCENTAJE
FROM(
SELECT F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y") AS MES_AÑO,
SUM(IFa.CANTIDAD) AS CANTIDAD_VENDIDA,
(VOLUMEN_DE_COMPRA)/10 AS CANTIDAD_MAXIMA
FROM facturas F
INNER JOIN
items_facturas IFa
ON F.NUMERO = IFa.NUMERO
INNER JOIN
tabla_de_clientes TC
ON TC.DNI = F.DNI
where year(f.fecha_venta) = '2018'

GROUP BY
F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y"))A
#WHERE (A.CANTIDAD_MAXIMA - A.CANTIDAD_VENDIDA) < 0 ;
where (((a.cantidad_vendida/a.cantidad_maxima)-1)*100) >=50;

1 respuesta

¡Hola! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!