Mejora: Para cumplir con todos los requerimientos mencionados, hay que asegurarse de:
Filtrar las líneas incorrectas.
Listar CANTIDAD_LIMITE.
Ejecutar la fórmula requerida y corregir la expresión del CASE.
Código Mejorado:
SELECT A.DNI, A.NOMBRE, A.MES_AÑO, A.CANTIDAD_VENDIDA - A.CANTIDAD_MAXIMA AS DIFERENCIA, 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 WHERE (SUM(IFa.CANTIDAD) - MAX(VOLUMEN_DE_COMPRA)/10) < 0 GROUP BY F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y") ) AS A
Este código realiza lo siguiente:
Filtra las líneas donde (A.CANTIDAD_VENDIDA - A.CANTIDAD_MAXIMA) < 0.
Lista CANTIDAD_LIMITE como se pide en los requisitos del informe.
Crea un nuevo campo con la fórmula (1 - (X.CANTIDAD_LIMITE/X.CANTIDAD_VENDAS)) * 100.