Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
fmatus93
Contributor II
Contributor II

Sumar valores negativos con condiciones

Estimada comunidad, tengo el siguiente problema que llevo un tiempo tratando de solucionar y no he podido.
Debo calcular el porcentaje de toneladas que tienen un margen negativo y además son de exportación sobre el total de toneladas de exportación. Como ejemplo hice esta tabla:

consultaQLIK.PNG

Donde el %Margen lo calculo con (precio neto - costo total)/(precio unitario).

Lo que debo calcular, por ejemplo para enero es:

Sumar las toneladas que sean de exportación y además tengan un margen negativo. En este caso la suma es 2+2+6 = 10 Toneladas que es el resultado que cumple con las condiciones. Luego debo sumar el total de toneladas que sean de exportación, donde en enero da el valor de 2+4+2+6 = 14. Finalmente lo que debo obtener es el porcentaje de las toneladas que van a exportación con un margen negativo sobre el total de las toneladas de exportación, osea, 10/14 = 0,7142. El resultado debo obtenerlo para todos los meses del año.

Intenté con la siguiente expresión, pero no me resultó:

if( (sum(precio neto) - sum(costo total))/sum(precio unitario) <0, sum({<Tipo_Cliente={'Exportación'}>}Toneladas)/sum(TOTAL {<Tipo_Cliente={'Exportación'}>}Toneladas) )

No obtengo el valor que necesito, también intenté con la función Aggr, pero tampoco me resultó. Hay algo que estoy haciendo mal.

Si me pueden ayudar estaré muy agradecido, es probable que se realicé de una manera totalmente diferente.

Estoy muy atento a sus comentarios, de antemano, muchas gracias.

 

Francisco M.

1 Solution

Accepted Solutions
SONIAGESIMDE
Contributor II
Contributor II

Hola Francisco,

Prueba con ésto:

Sum( AGGR( If(%Margen<0,sum( {< Tipo_Cliente={'Exportación'}> } Toneladas ),0), Mes, Producto, Tipo_Cliente))
/
Sum( AGGR(sum( {< Tipo_Cliente={'Exportación'}> } Toneladas ), Mes, Producto, Tipo_Cliente))

 

Saludos,

View solution in original post

6 Replies
rubenmarin

Hola Francisco, podrías usar:

Sum({<Tipo_Cliente={'Exportación'}>} Aggr(If(sum(precio neto) - sum(costo total))/sum(precio unitario)<0, Toneladas)
, Mes, Producto, Tipo_Cliente))/Sum(TOTAL {<Tipo_Cliente={'Exportación'}>} Toneladas)

fmatus93
Contributor II
Contributor II
Author

Hola Ruben,

Gracias por tomarte un tiempo para responder. Intenté con la expresión que dejaste, pero no me da el resultado esperado, da porcentajes muy bajos para cada mes que no coinciden con los datos reales. Creo que no está sumando la totalidad de Toneladas con porcentaje negativo y de exportación.
¿Habrá otra forma de calcular?

rubenmarin

Parece que le falta un paréntesis:

Sum({<Tipo_Cliente={'Exportación'}>} Aggr(If((sum(precio neto) - sum(costo total))/sum(precio unitario)<0, Toneladas)
, Mes, Producto, Tipo_Cliente))/Sum(TOTAL {<Tipo_Cliente={'Exportación'}>} Toneladas)

Puede que haya algún error tipográfico pero la forma de calcularlo es esta... también puede que no lo haya entendido bien, en ese caso ¿Podrías subir un ejemplo para confirmar lo que hay que obtener?

Saludos.

fmatus93
Contributor II
Contributor II
Author

No hay error tipográfico, de hecho la expresión la toma correctamente. 
La tabla que subí como ejemplo es como se encuentran los datos y así poder comprender el resultado que estaba buscando, pero en realidad es una tabla simple en la cual debo obtener los porcentajes:

 

clipboard_image_0.png

Esta tabla de ejemplo es como deben quedar los resultados, en la cual me muestra el porcentaje de Toneladas vendidas que son de Exportación y tienen un Margen negativo sobre el Total de las toneladas vendidas a Exportación. Osea que si para un mes cualquiera se vendieron 200 toneladas que fueron exportadas de las cuales 75 tuvieron un margen negativo el resultado para ese mes debería ser 75/200 = 37,5%.

Si bien puse más abreviado la expresión para la primera tabla que subí, esta es la real que no me está dando los valores correctos:

sum({<tipo_cliente={'Exp'}>}Aggr
(if(((sum(Mill_net_price)/sum(Quantity))-(sum(Quantity*[Variable_cost.Variable_cost])/sum(Quantity))-(sum(Quantity*Costo_fijo)/sum(Quantity)))/(sum(Price_usd)/sum(Quantity))<0,Quantity),Month,tipo_cliente,[Papel20-papel]))
/sum(TOTAL{<tipo_cliente={'Exp'}>}Quantity)

Donde para efecto del ejemplo puse Ingreso Neto que en realidad es sum(Mill_net_price)/sum(Quantity) que no creo que afecte en el resultado.

SONIAGESIMDE
Contributor II
Contributor II

Hola Francisco,

Prueba con ésto:

Sum( AGGR( If(%Margen<0,sum( {< Tipo_Cliente={'Exportación'}> } Toneladas ),0), Mes, Producto, Tipo_Cliente))
/
Sum( AGGR(sum( {< Tipo_Cliente={'Exportación'}> } Toneladas ), Mes, Producto, Tipo_Cliente))

 

Saludos,

fmatus93
Contributor II
Contributor II
Author

Hola Sonia, 

Me funcionó perfectamente, muchas gracias por tu ayuda!!

Saludos.

 

Francisco