Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
pericles_silva
Contributor III
Contributor III

Pegando as últimas vendas de cada vendedor em uma tabela

            Em uma tabela de vendas, eu quero pegar apenas a última venda de cada vendedor (ordem:data e hora mais recente). Ex:

Tabela Origem:

Vendedor

 

Data

 

Hora

 

Produto

 

Péricles

 

10/04/2012

 

12:00

 

Webcam

 

Marcelo

 

11/04/2012

 

13:00

 

Celular

 

Paulo

 

12/04/2012

 

14:00

 

Pen Drive

 

Paulo

 

25/04/2012

 

16:00

 

Webcam

 

Péricles

 

13/04/2012

 

09:00

 

Webcam

 

Péricles

 

14/04/2012

 

11:00

 

Celular

 

Péricles

 

25/04/2012

 

14:00

 

Pen Drive

 

Marcelo

 

25/04/2012

 

15:00

 

Celular

 

Marcelo

 

12/04/2012

 

17:00

 

Webcam

 

Tabela Resultante:

Vendedor

 

Data

 

Hora

 

Produto

 

Péricles

 

25/04/2012

 

14:00

 

Pen Drive

 

Marcelo

 

25/04/2012

 

15:00

 

Celular

 

Paulo

 

25/04/2012

 

16:00

 

Webcam

 

Script Tabela Origem:

VENDAS:

LOAD * INLINE [

    Vendedor, Data, Hora, Produto

    Péricles, 10/04/2012, 12:00, Webcam

    Marcelo, 11/04/2012, 13:00, Celular

    Paulo, 12/04/2012, 14:00, Pen Drive

    Paulo, 25/04/2012, 16:00, Webcam

    Péricles, 13/04/2012, 09:00, Webcam

    Péricles, 14/04/2012, 11:00, Celular

    Péricles, 25/04/2012, 14:00, Pen Drive

    Marcelo, 25/04/2012, 15:00, Celular

    Marcelo, 12/04/2012, 17:00, Webcam

];

11 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá Pericles,

Também não entendi o comportamento do MaxString, ele deveria trazer o resultado correto, funcionando como um Max do agrupamento, algo como o que acontece com o SQL, mas...

Fazendo uma junção da ideia do Cesar com a minha e depois de alguns teste, cheguei no script abaixo, dá o resultado que você precisa, o que é mais importante. Rsrsrrs...

Como o MaxString está fazendo correto com a data, agrupando pelo Vendedor ou pelo Produto, no scrpt abaixo funciona.

Abraço.

Temp:

LOAD Vendedor,

    Date#(Data&' '&Hora,'dd/MM/yyyy HH:mm') as Data,

    Produto

INLINE [

    Vendedor, Data, Hora, Produto

    Péricles, 10/04/2012, 12:00, Webcam

    Marcelo, 11/04/2012, 13:00, Celular

    Paulo, 12/04/2012, 14:00, Pen Drive

    Paulo, 25/04/2012, 16:00, Webcam

    Péricles, 13/04/2012, 09:00, Webcam

    Péricles, 14/04/2012, 11:00, Celular

    Péricles, 25/04/2012, 14:00, Pen Drive

    Marcelo, 25/04/2012, 15:00, Celular

    Marcelo, 12/04/2012, 17:00, Webcam

];

Vendas:

LOAD Vendedor,

    MaxString(Data) as Data

Resident Temp

Group By Vendedor;

Left Join (Vendas)

LOAD Produto,

    MaxString(Data) as Data

Resident Temp

Group By Produto;

DROP Table Temp;

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
pericles_silva
Contributor III
Contributor III
Author

Perfeito !

Eu tinha conseguido já fazendo um "Bacalhau" com operações de String, mas esse é o formal.

Valeu pela força.