Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal.
Estou precisando de Ajuda para identificar quantos Produtos compõem 50% do valor do meu portfólio, eu sei quantos produtos eu tenho, agora preciso somar o valor de todos e contar os mais caros até compor 50% do total do valor.
Coloquei um Exemplo em anexo.
Agradeço a Ajuda
Guilherme,
a melhor maneira de fazer isto é usando o aggr
a uns anos atrás, veio um novo parâmetro no aggr que permite determinar a ordem de leitura e neste caso, basta colocar em ordem de valor descendente
Count(Distinct
Aggr(If(Rangesum(Above(Sum(valor)/Sum(total valor),1,RowNo()))<0.5, Produto),(Produto,(=Sum(valor),Desc))))
Boa tarde, me veio na cabeça essa solução mas deve existir outras maneiras.
1- Listo todos meus produtos e valores
2-Crio um variável que traga a contagem total / 2
3- Ordeno eles pelo maior valor e crio um sequencial novo
4- Filtro no where a Sequencia nova <= variável
5-Resultado tenho uma lista da metade de meu estoque 50%
dados:
LOAD * INLINE [
idProduto, ValorProduto
1, 10
2, "15,9"
3, "26,9"
4, "36,9"
5, "90,1"
6, "90,32"
7, "108,44"
8, "126,56"
9, "144,68"
10, "162,8"
11, "180,92"
12, "199,04"
13, "217,16"
14, "235,28"
15, "253,4"
16, "271,52"
17, "289,64"
18, "307,76"
19, "325,88"
20, 344
21, "362,12"
22, "380,24"
23, "398,36"
24, "416,48"
25, "434,6"
26, "452,72"
27, "470,84"
28, "488,96"
29, "507,08"
30, "525,2"
31, "543,32"
32, "561,44"
33, "579,56"
34, "597,68"
35, "615,8"
36, "633,92"
37, "652,04"
38, "670,16"
39, "688,28"
40, "706,4"
41, "724,52"
42, "742,64"
43, "760,76"
44, "778,88"
45, 797
46, "815,12"
47, "833,24"
48, "851,36"
49, "869,48"
50, "887,6"
51, "905,72"
52, "923,84"
53, "941,96"
54, "960,08"
55, "978,2"
56, "996,32"
57, "1014,44"
58, "1032,56"
59, "1050,68"
60, "1068,8"
61, "1086,92"
62, "1105,04"
63, "1123,16"
64, "1141,28"
65, "1159,4"
66, "1177,52"
67, "1195,64"
68, "1213,76"
69, "1231,88"
70, 1250
71, "1268,12"
72, "1286,24"
73, "1304,36"
74, "1322,48"
75, "1340,6"
76, "1358,72"
77, "1376,84"
78, "1394,96"
79, "1413,08"
80, "1431,2"
81, "1449,32"
82, "1467,44"
83, "1485,56"
84, "1503,68"
85, "1521,8"
86, "1539,92"
87, "1558,04"
88, "1576,16"
89, "1594,28"
90, "1612,4"
91, "1630,52"
92, "1648,64"
93, "1666,76"
94, "1684,88"
95, 1703
96, "1721,12"
97, "1739,24"
98, "1757,36"
99, "1775,48"
100, "1793,6"
101, "1811,72"
102, "1829,84"
103, "1847,96"
104, "1866,08"
105, "1884,2"
106, "1902,32"
107, "1920,44"
108, "1938,56"
109, "1956,68"
110, "1974,8"
111, "1992,92"
112, "2011,04"
113, "2029,16"
114, "2047,28"
115, "2065,4"
116, "2083,52"
117, "2101,64"
118, "2119,76"
119, "2137,88"
120, 2156
121, "2174,12"
122, "2192,24"
123, "2210,36"
124, "2228,48"
125, "2246,6"
126, "2264,72"
127, "2282,84"
128, "2300,96"
129, "2319,08"
130, "2337,2"
131, "2355,32"
132, "2373,44"
133, "2391,56"
134, "2409,68"
135, "2427,8"
136, "2445,92"
137, "2464,04"
138, "2482,16"
139, "2500,28"
140, "2518,4"
141, "2536,52"
142, "2554,64"
143, "2572,76"
144, "2590,88"
145, 2609
146, "2627,12"
147, "2645,24"
148, "2663,36"
149, "2681,48"
150, "2699,6"
151, "2717,72"
152, "2735,84"
153, "2753,96"
154, "2772,08"
155, "2790,2"
156, "2808,32"
157, "2826,44"
158, "2844,56"
159, "2862,68"
160, "2880,8"
161, "2898,92"
162, "2917,04"
163, "2935,16"
164, "2953,28"
165, "2971,4"
166, "2989,52"
167, "3007,64"
168, "3025,76"
169, "3043,88"
170, 3062
171, "3080,12"
172, "3098,24"
173, "3116,36"
174, "3134,48"
175, "3152,6"
176, "3170,72"
177, "3188,84"
178, "3206,96"
179, "3225,08"
180, "3243,2"
181, "3261,32"
182, "3279,44"
183, "3297,56"
184, "3315,68"
185, "3333,8"
186, "3351,92"
187, "3370,04"
188, "3388,16"
189, "3406,28"
190, "3424,4"
191, "3442,52"
192, "3460,64"
193, "3478,76"
194, "3496,88"
195, 3515
196, "3533,12"
197, "3551,24"
198, "3569,36"
199, "3587,48"
200, "3605,6"
201, "3623,72"
202, "3641,84"
203, "3659,96"
204, "3678,08"
205, "3696,2"
206, "3714,32"
207, "3732,44"
208, "3750,56"
209, "3768,68"
210, "3786,8"
211, "3804,92"
212, "3823,04"
213, "3841,16"
214, "3859,28"
215, "3877,4"
216, "3895,52"
217, "3913,64"
218, "3931,76"
219, "3949,88"
220, 3968
221, "3986,12"
222, "4004,24"
223, "4022,36"
224, "4040,48"
225, "4058,6"
226, "4076,72"
227, "4094,84"
228, "4112,96"
229, "4131,08"
230, "4149,2"
231, "4167,32"
232, "4185,44"
233, "4203,56"
234, "4221,68"
235, "4239,8"
236, "4257,92"
237, "4276,04"
238, "4294,16"
239, "4312,28"
240, "4330,4"
241, "4348,52"
242, "4366,64"
243, "4384,76"
244, "4402,88"
245, 4421
246, "4439,12"
247, "4457,24"
248, "4475,36"
249, "4493,48"
250, "4511,6"
251, "4529,72"
252, "4547,84"
253, "4565,96"
254, "4584,08"
255, "4602,2"
256, "4620,32"
257, "4638,44"
258, "4656,56"
259, "4674,68"
260, "4692,8"
261, "4710,92"
262, "4729,04"
263, "4747,16"
264, "4765,28"
265, "4783,4"
266, "4801,52"
267, "4819,64"
268, "4837,76"
269, "4855,88"
270, 4874
271, "4892,12"
272, "4910,24"
273, "4928,36"
274, "4946,48"
275, "4964,6"
276, "4982,72"
277, "5000,84"
278, "5018,96"
279, "5037,08"
280, "5055,2"
281, "5073,32"
282, "5091,44"
283, "5109,56"
284, "5127,68"
285, "5145,8"
286, "5163,92"
287, "5182,04"
288, "5200,16"
289, "5218,28"
290, "5236,4"
291, "5254,52"
292, "5272,64"
293, "5290,76"
294, "5308,88"
295, 5327
296, "5345,12"
297, "5363,24"
298, "5381,36"
299, "5399,48"
300, "5417,6"
301, "5435,72"
302, "5453,84"
303, "5471,96"
304, "5490,08"
305, "5508,2"
306, "5526,32"
307, "5544,44"
308, "5562,56"
309, "5580,68"
310, "5598,8"
311, "5616,92"
312, "5635,04"
313, "5653,16"
314, "5671,28"
315, "5689,4"
316, "5707,52"
317, "5725,64"
318, "5743,76"
319, "5761,88"
320, 5780
321, "5798,12"
322, "5816,24"
323, "5834,36"
324, "5852,48"
325, "5870,6"
326, "5888,72"
327, "5906,84"
328, "5924,96"
329, "5943,08"
330, "5961,2"
331, "5979,32"
332, "5997,44"
333, "6015,56"
334, "6033,68"
335, "6051,8"
336, "6069,92"
337, "6088,04"
338, "6106,16"
339, "6124,28"
340, "6142,4"
341, "6160,52"
342, "6178,64"
343, "6196,76"
344, "6214,88"
345, 6233
346, "6251,12"
347, "6269,24"
348, "6287,36"
349, "6305,48"
350, "6323,6"
351, "6341,72"
352, "6359,84"
353, "6377,96"
354, "6396,08"
355, "6414,2"
356, "6432,32"
357, "6450,44"
358, "6468,56"
359, "6486,68"
360, "6504,8"
361, "6522,92"
362, "6541,04"
363, "6559,16"
364, "6577,28"
365, "6595,4"
366, "6613,52"
367, "6631,64"
368, "6649,76"
369, "6667,88"
370, 6686
371, "6704,12"
372, "6722,24"
373, "6740,36"
374, "6758,48"
375, "6776,6"
376, "6794,72"
377, "6812,84"
378, "6830,96"
379, "6849,08"
380, "6867,2"
381, "6885,32"
382, "6903,44"
383, "6921,56"
384, "6939,68"
385, "6957,8"
386, "6975,92"
387, "6994,04"
388, "7012,16"
389, "7030,28"
390, "7048,4"
391, "7066,52"
392, "7084,64"
393, "7102,76"
394, "7120,88"
395, 7139
396, "7157,12"
397, "7175,24"
398, "7193,36"
399, "7211,48"
400, "7211,48"
];
div:
LOAD round(Count(idProduto)/2) as div Resident dados; vDiv = Peek('div'); DROP Table div;
NoConcatenate
dados2:
LOAD RecNo() as Seq, * Resident dados
order by ValorProduto desc;
DROP Table dados;
NoConcatenate
dados3:
LOAD * Resident dados2 where Seq <= $(vDiv);
DROP Table dados2;
Boa Tarde Guilherme,
Acredito que o resultado esperado seja conforme print abaixo certo? Se for, segue abaixo script.
Na carga é preciso ordenar os valores de forma decrescente.
tmp:
LOAD * INLINE [
Produto , Valor
a , 10
b , 20
c , 58
d , 70
e , 100
f , 90
g , 200
h , 80
i , 60
j , 70
k , 2
l , 5
];
VENDAS:
LOAD
*,
AutoNumber(Valor) as Ranking,
NumSum(Valor,Peek('Acumulado')) as Acumulado
Resident tmp Order By Valor desc;
Drop Table tmp;
E na medida pode ser feito conforme abaixo:
Sum(If(Acumulado <= Sum(Total Valor) / 2, Acumulado, 0))
Boa Tarde Danilo.
Obrigado pela ajuda mas desta forma nós teremos o valor total de 50% dos produtos que tem o maior valor certo?
Se sim, não da porque o valor de 50% ficara alto, imagina que eu tenho 1000 reais em vendas e preciso saber para quantos clientes diferentes eu vendi 500 reais e precisaria disto apenas como texto não precisa ser em gráfico ou tabela.
Se tiver em mente algo que possa me ajudar agradeço.
Entendi você quer fazer tipo curva ABC classificando somente o ponto A com 50%
Exatamente, eu preciso apenas saber quantos clientes fazem parte do "A" (Contar) em um quadro de texto mesmo, eu tenho um quadro de texto aonde eu tenho a quantidade total de cliente com relação ao filtro selecionado e agora preciso mostrar o "A" de acordo com o filtro selecionado.
tem uma foto em anexo de como preciso representar.
Boa tarde Rodrigo.
Obrigado pela ajuda, é quase isto que preciso....preciso apenas dizer quantos cliente compõem estes 50% (como no exemplo 2) em caixa de texto e que seja de acordo com os filtro selecionados.
exemplo de ilustração em anexo
obrigado.
Guilherme,
Nesse caso muda apenas a medida, onde vou somar 1 sempre que a condição for menor que 50% do total faturado.
Sum(If(Acumulado <= Sum(Total Valor) / 2, 1, 0))
veja esse link
Danilo.
Obrigado pelo link, me deu um norte mas ainda não consegui.
cheguei no abaixo para contar os produtos mas esta me trazendo o valor total de produtos:
=If( RangeSum(Above(Sum(Valor), 1, RowNo())) / Sum(total Valor)< 0.5, Count(distinct(Produto)))
consegue me ajudar?
Estou colocando isto em um objeto texto.