Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Subtrair Data/Hora da próxima linha com a atual

Bom Dia,

Estou com um problema e já pesquisei por vários sites e não consegui resolvê-lo, talvez alguém aqui possa me ajudar. O problema é o seguinte:

 

IdentificaçãoÁreaHorario
1XXX06/10/2016 18:30
1YYY06/10/2016 18:35
1XXX10/10/2016 09:45
2AAA15/10/2016 15:20
2BBB15/10/2016 17:33

Tenho a tabela acima e preciso calcular o tempo que cada usuário permaneceu em cada área, ou seja, se o código da 'Identificação' da linha atual for igual ao da próxima linha e a 'Área' for diferente eu preciso pegar o 'Horario' da próxima linha e subtrair da atual como exemplo abaixo:

  

IdentificaçãoÁreaHorarioTempo em cada Área
1XXX06/10/2016 18:3006/10/2016 18:35 - 06/10/2016 18:30 = 00:05

Porém quando a 'Área' for a mesma eu apenas somo os horários.

Alguém consegue me ajudar?

Labels (3)
1 Solution

Accepted Solutions
maxgro
MVP
MVP

I think tou can add to every record the fields of the next one, ie

U:

load *, rowno() as id inline [

Identificao, Area, Horario

1, XXX, 06/10/2016 18:30

1, YYY, 06/10/2016 18:35

1, XXX, 10/10/2016 09:45

2, AAA, 15/10/2016 15:20

2, BBB, 15/10/2016 17:33

];

U1:

load *,

  peek('Identificao') as NextIdentificao,

  peek('Area') as NextArea,

  peek('Horario') as NextHorario

Resident U

Order by id desc;

DROP Table U;

The result is this table: now you have in a single row all the data you need to calc the time difference between the 2rows

1.png

View solution in original post

5 Replies
Not applicable
Author

Juliene,

se você conseguir ordenar os dados, é possível fazer conforme o anexo.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Juliene,

segue um modelo com os seus dados...

Identificação Área Horario Diferenca
1XXX06/10/2016 18:30 
1YYY06/10/2016 18:3500:05:00
1XXX10/10/2016 09:4515:10:00
2AAA15/10/2016 15:20 
2BBB15/10/2016 17:3302:13:00
furtado@farolbi.com.br
maxgro
MVP
MVP

I think tou can add to every record the fields of the next one, ie

U:

load *, rowno() as id inline [

Identificao, Area, Horario

1, XXX, 06/10/2016 18:30

1, YYY, 06/10/2016 18:35

1, XXX, 10/10/2016 09:45

2, AAA, 15/10/2016 15:20

2, BBB, 15/10/2016 17:33

];

U1:

load *,

  peek('Identificao') as NextIdentificao,

  peek('Area') as NextArea,

  peek('Horario') as NextHorario

Resident U

Order by id desc;

DROP Table U;

The result is this table: now you have in a single row all the data you need to calc the time difference between the 2rows

1.png

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

O tempo que mostra a tabela esta errado.....mas o calculo esta certo....formatei o campo mas nao fiz o calculo...

(sum(Diferenca)*24)*60

Identificação Área Horario Minutos
5368,00
1YYY06/10/2016 18:355,00
1XXX10/10/2016 09:455230,00
2BBB15/10/2016 17:33133,00
furtado@farolbi.com.br
Not applicable
Author

Bom Dia pessoal,

Muito obrigada pela ajuda, marquei a resposta do M G como correta pois era a linha de raciocínio que eu tinha começado, mas as outras também da certo, depende da forma se prefere trabalhar.

Abraços.