Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
salomaojo
Contributor
Contributor

Como contar o numero de compras de um cliente nos meses do ano?

Olá pessoal estou com um pequeno problema e eu gostaria de saber se alguem já passou por algo assim. Tenho uma tabela de Movimentos com campos IdVenda, IdCliente, DataVenda e ValorVenda eu precisava montar uma espécie de Bucket contando o numero de vezes que o cliente comprou. O range seria assim: 

Nr. de Clientes que compraram 1x

                                                                2 a 5x

                                                               6  a 9x

                                                              10 a  12x

                                                              13x ou mais

e uma outra range seria  clientes que compraram no últimos 30 dias

                                                                                                                             31 a 60 dias

                                                                                                                            61 a 90 dias 

                                                                                                                            91 a 120 dias

                                                                                                                           121 a 180 dias

                                                                                                                          181 a 360 dias

Na verdade é uma especie de analise RFV (Recencia, Frequencia e Valor do cliente)

 

1 Solution

Accepted Solutions
danilostochi
Creator II
Creator II

Boa tarde, classifica do seguinte modo (DataHoje-DataVenda, resultado gera a classificação),.
Aqui ele não Classificou certo, tipo o IdCliente 12, tem uma quantidade de 147 dias, não se enquadraria no range 121 a 180 dias?
R: Isso é problema do formato eu add um num# que corrige esse problema.

Segue script atualizado:
dados:
LOAD
IdCliente&'-'&IdVenda as KeyClienteVenda,
num#(Interval#(Today()-DataVenda)) as DiasVenda,


if(num#(Interval#(Today()-DataVenda)) >=31 and num#(Interval#(Today()-DataVenda)) <= 60, '31 a 60',
if(num#(Interval#(Today()-DataVenda)) >=61 and num#(Interval#(Today()-DataVenda)) <= 90, '61 a 90',
if(num#(Interval#(Today()-DataVenda)) >= 91 and num#(Interval#(Today()-DataVenda)) <= 120, '91 a 120',
if(num#(Interval#(Today()-DataVenda)) >= 121 and num#(Interval#(Today()-DataVenda)) <= 180, '121 a 180',
if(num#(Interval#(Today()-DataVenda)) >= 181 and num#(Interval#(Today()-DataVenda)) <= 360, '181 a 360','NA')
)
)
)
) as ClassificacaoDias,



* INLINE [
IdVenda, IdCliente, DataVenda, ValorVenda
1, 12, 01/01/2018, 10
2, 12, 01/01/2019, 200
4, 15, 01/03/2019, 400
5, 14, 22/04/2019, 450
6, 21, 01/05/2019, 650
7, 21, 10/05/2019, 250
8, 23, 20/05/2019, 144
9, 12, 25/05/2019, 154
10, 12, 10/05/2019, 154
11, 14, 20/05/2019, 154
12, 15, 25/05/2019, 154
13, 14, 10/05/2019, 154
14, 21, 20/05/2019, 154
15, 21, 25/05/2019, 154
16, 23, 10/05/2019, 154
17, 12, 20/05/2019, 154
18, 12, 25/05/2019, 154
19, 14, 10/05/2019, 154
20, 15, 20/11/2018, 154
21, 14, 25/05/2019, 154
22, 21, 10/05/2019, 154
23, 21, 20/05/2019, 154
24, 23, 25/05/2019, 154
25, 21, 10/05/2019, 154
26, 66, 20/05/2019, 154
27, 77, 25/05/2019, 155
28, 99, 10/05/2019, 156
29, 99, 20/05/2019, 157
30, 65, 25/05/2019, 158
31, 89, 10/05/2019, 159
32, 90, 01/02/2019, 54
];


NumeroClienteCompraram:
LOAD

if(Count(IdVenda)=1,'1x',
if(Count(IdVenda) >1 and Count(IdVenda) <=5,'2 a 5x',
if(Count(IdVenda) >5 and Count(IdVenda) <=9,'6 a 9x',
if(Count(IdVenda) >9 and Count(IdVenda) <=12,'10 a 12x',
if(Count(IdVenda) >12,'13x ou mais')
)
)
)
) as NumeroClientesVendas,
IdCliente
Resident dados Group by IdCliente;




+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com

View solution in original post

6 Replies
danilostochi
Creator II
Creator II

dados:
LOAD
IdCliente as IdCliente2,
Interval#(Today()-DataVenda) as DiasVenda,

if(Interval#(Today()-DataVenda) >=31 and Interval#(Today()-DataVenda) <= 60, '31 a 60',
if(Interval#(Today()-DataVenda) >=61 and Interval#(Today()-DataVenda) <= 90, '61 a 90',
if(Interval#(Today()-DataVenda) >= 91 and Interval#(Today()-DataVenda) <= 120, '91 a 120 dias',
if(Interval#(Today()-DataVenda) >= 121 and Interval#(Today()-DataVenda) <= 180, '121 a 180',
if(Interval#(Today()-DataVenda) >= 181 and Interval#(Today()-DataVenda) <= 360, '181 a 360')
)
)
)
) as ClassificacaoDias,

* INLINE [
IdVenda, IdCliente, DataVenda, ValorVenda
1, 12, 01/01/2018, 10
2, 12, 01/01/2019, 200
4, 15, 01/03/2019, 400
5, 14, 22/04/2019, 450
6, 21, 01/05/2019, 650
7, 21, 10/05/2019, 250
8, 23, 20/05/2019, 144
9, 12, 25/05/2019, 154
10, 12, 10/05/2019, 154
11, 14, 20/05/2019, 154
12, 15, 25/05/2019, 154
13, 14, 10/05/2019, 154
14, 21, 20/05/2019, 154
15, 21, 25/05/2019, 154
16, 23, 10/05/2019, 154
17, 12, 20/05/2019, 154
18, 12, 25/05/2019, 154
19, 14, 10/05/2019, 154
20, 15, 20/05/2019, 154
21, 14, 25/05/2019, 154
22, 21, 10/05/2019, 154
23, 21, 20/05/2019, 154
24, 23, 25/05/2019, 154
25, 21, 10/05/2019, 154
26, 66, 20/05/2019, 154
27, 77, 25/05/2019, 155
28, 99, 10/05/2019, 156
29, 99, 20/05/2019, 157
30, 65, 25/05/2019, 158
31, 89, 10/05/2019, 159
];


NumeroClienteCompraram:
LOAD

if(Count(IdVenda)=1,'1x',
if(Count(IdVenda) >1 and Count(IdVenda) <=5,'2 a 5x',
if(Count(IdVenda) >5 and Count(IdVenda) <=9,'6 a 9x',
if(Count(IdVenda) >9 and Count(IdVenda) <=12,'10 a 12x',
if(Count(IdVenda) >12,'13x ou mais')
)
)
)
) as NumeroClientesVendas,
IdCliente


Resident dados Group by IdCliente;
//creio que isso pode lhe atender, você também pode agrupar "ClassificacaoDias" pela contagem de clientes
+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
salomaojo
Contributor
Contributor
Author

Danilo tudo bem?

Por gentileza tira uma dúvida minha.

A ClassificaçãoDias é pela quantidade de dias que o cliente não compra? Esta contando os dias  e pelo resultado do campo DiasVenda ele enquadra no Range do campo ClassificacaoDias?

Aqui ele não Classificou certo, tipo o IdCliente 12, tem uma quantidade de 147 dias, não se enquadraria no range 121 a 180 dias?

 

danilostochi
Creator II
Creator II

Boa tarde, classifica do seguinte modo (DataHoje-DataVenda, resultado gera a classificação),.
Aqui ele não Classificou certo, tipo o IdCliente 12, tem uma quantidade de 147 dias, não se enquadraria no range 121 a 180 dias?
R: Isso é problema do formato eu add um num# que corrige esse problema.

Segue script atualizado:
dados:
LOAD
IdCliente&'-'&IdVenda as KeyClienteVenda,
num#(Interval#(Today()-DataVenda)) as DiasVenda,


if(num#(Interval#(Today()-DataVenda)) >=31 and num#(Interval#(Today()-DataVenda)) <= 60, '31 a 60',
if(num#(Interval#(Today()-DataVenda)) >=61 and num#(Interval#(Today()-DataVenda)) <= 90, '61 a 90',
if(num#(Interval#(Today()-DataVenda)) >= 91 and num#(Interval#(Today()-DataVenda)) <= 120, '91 a 120',
if(num#(Interval#(Today()-DataVenda)) >= 121 and num#(Interval#(Today()-DataVenda)) <= 180, '121 a 180',
if(num#(Interval#(Today()-DataVenda)) >= 181 and num#(Interval#(Today()-DataVenda)) <= 360, '181 a 360','NA')
)
)
)
) as ClassificacaoDias,



* INLINE [
IdVenda, IdCliente, DataVenda, ValorVenda
1, 12, 01/01/2018, 10
2, 12, 01/01/2019, 200
4, 15, 01/03/2019, 400
5, 14, 22/04/2019, 450
6, 21, 01/05/2019, 650
7, 21, 10/05/2019, 250
8, 23, 20/05/2019, 144
9, 12, 25/05/2019, 154
10, 12, 10/05/2019, 154
11, 14, 20/05/2019, 154
12, 15, 25/05/2019, 154
13, 14, 10/05/2019, 154
14, 21, 20/05/2019, 154
15, 21, 25/05/2019, 154
16, 23, 10/05/2019, 154
17, 12, 20/05/2019, 154
18, 12, 25/05/2019, 154
19, 14, 10/05/2019, 154
20, 15, 20/11/2018, 154
21, 14, 25/05/2019, 154
22, 21, 10/05/2019, 154
23, 21, 20/05/2019, 154
24, 23, 25/05/2019, 154
25, 21, 10/05/2019, 154
26, 66, 20/05/2019, 154
27, 77, 25/05/2019, 155
28, 99, 10/05/2019, 156
29, 99, 20/05/2019, 157
30, 65, 25/05/2019, 158
31, 89, 10/05/2019, 159
32, 90, 01/02/2019, 54
];


NumeroClienteCompraram:
LOAD

if(Count(IdVenda)=1,'1x',
if(Count(IdVenda) >1 and Count(IdVenda) <=5,'2 a 5x',
if(Count(IdVenda) >5 and Count(IdVenda) <=9,'6 a 9x',
if(Count(IdVenda) >9 and Count(IdVenda) <=12,'10 a 12x',
if(Count(IdVenda) >12,'13x ou mais')
)
)
)
) as NumeroClientesVendas,
IdCliente
Resident dados Group by IdCliente;




+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
salomaojo
Contributor
Contributor
Author

Danilo agora funcionou meu amigo!  Muito obrigado! 

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

dependendo, daria para usar  o class() 

furtado@farolbi.com.br
Ariele
Contributor III
Contributor III

Danilo Boa tarde tudo bem? Estou com uma questão aqui parecida com essa, porém eu tenho uma fato pedidos e uma dimensao cliente, que contem no qvd dele um campo 'Data_Ultima_Compra', fiz desta mesma forma que vc mostrou ai, porém nao deu certo, você poderia me ajudar?