Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
luis_lorenzo
Contributor III
Contributor III

Como dividir Horários

Bom dia afurtado


Estava olha do que vc ajudou a resolver uma questão no post  Contar registros em um intervalo de horario


Gostaria de saber como posso fazer essa quebra levando em conta que minha divisão ficasse desta maneira:


01:00 - 07:00

07:00 - 13:00

13:00 - 19:00

19:00 - 01:00(do dia seguinte)


A disposição e muito grato se eu conseguir resolver isso!

22 Replies
maxgro
MVP
MVP

my idea in the attachment

1.png

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Boa noite Luis Loreno.

Pelo visto maxgro‌ já resolveu.  Fico devendo para a próxima.....

furtado@farolbi.com.br
luis_lorenzo
Contributor III
Contributor III
Author

luis_lorenzo
Contributor III
Contributor III
Author

na verdade afurtado, maxgro o meu problema se aplica bema situação destacada no post abaixo:

Classificar dados de tabelas diferente(datas em turnos)

Eu tenho turno data de inicio e fim de trabalho e classifico em turno, eu preciso saber quanto ele trabalhou em cada turno e na outra tabela quantos atendimentos fez naquele Turno.

Esse esta sendo meu grande problema.

fernando_tonial
Partner - Specialist
Partner - Specialist

Olá Luis,

Veja se assim lhe atende.

01-10-2015 17-28-32.png

Script

ClasseTurno:

LOAD Turno,

  Inicio AS InicioHora,

  Fim AS FimHora,

  Num(Inicio,'0,0000') AS Inicio,

  IF(Fim>='00:00' and Fim<='00:59',Num(Fim+1,'0,0000'),Num(Fim,'0,0000')) AS Fim

  Inline [

  Inicio, Fim, Turno

  01:00, 06:59, 01:00 - 07:00

  07:00, 12:59, 07:00 - 13:00

  13:00, 18:59, 13:00 - 19:00

  19:00, 00:59, 19:00 - 01:00

];

Dados:

LOAD *, IF(Tempo>='00:00' and Tempo<='00:59',Num(Tempo+1,'0,0000'),Num(Tempo,'0,0000')) as ChaveTempo;

LOAD * INLINE [

    Item    ,Data          , Tempo

    1       ,20/01/2015    , 07:35

    2       ,20/01/2015    , 07:36

    3       ,20/01/2015    , 07:37

    4       ,20/01/2015    , 07:45

    5       ,20/01/2015    , 07:55

    6       ,20/01/2015    , 08:15

    7       ,20/01/2015    , 08:35

    8       ,20/01/2015    , 08:55

    9       ,20/01/2015    , 09:25

    10      ,20/01/2015    , 10:15

    11      ,20/01/2015    , 11:00

    12      ,20/01/2015    , 12:15

    13      ,20/01/2015    , 13:00

    14      ,20/01/2015    , 14:15

    15      ,20/01/2015    , 15:00

    16      ,20/01/2015    , 16:15

    17      ,20/01/2015    , 17:00

    18      ,20/01/2015    , 18:15

    19      ,20/01/2015    , 19:00

    20      ,20/01/2015    , 20:15

    21      ,20/01/2015    , 21:00

    22      ,20/01/2015    , 22:15

    23      ,20/01/2015    , 23:00

    24      ,21/01/2015    , 00:00

    25      ,21/01/2015    , 00:15

    26      ,21/01/2015    , 01:00

];

IntervalMatch (ChaveTempo) Left Join (ClasseTurno) LOAD Inicio, Fim Resident ClasseTurno;

Don't worry, be Qlik.

Tonial.

Don't Worry, be Qlik.
luis_lorenzo
Contributor III
Contributor III
Author

Bom dia fernando.tonial

è quase isso meu problema é que trabalho com tabela de horas de entrada e saida e com isso preciso divir quanto de tempo ocorreu em cada um dos turnos.

por exemplo:

Exemplo: Medico XXXX trabalhou das 13:00 até as 20:00 atendendo 12 pacientes neste turno. Então, sendo assim atendeu das 13:00-19:00 10 pacientes e trabalhou 6 hrs, porém como o ponto de saída dele foi batido as 20:00 ele ainda cai no turno das 19:00-01:00 com 2 pacientes atendidos e 1:00 de trabalho.


Estou anexando um modelo para exemplificar.

PlantaoXAtendimentos_Tabelas.jpg

A disposição,

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Luis, boa noite.

Veja se serve assim.

Atendimentos:

Paciente   ,Data          , Hora 

    1      ,20/01/2015    , 13:00 

    2      ,20/01/2015    , 14:15 

    3      ,20/01/2015    , 15:00 

    4      ,20/01/2015    , 16:15 

    5      ,20/01/2015    , 16:30 

    6      ,20/01/2015    , 17:15 

    7      ,20/01/2015    , 17:30 

    8      ,20/01/2015    , 17:45 

    9      ,20/01/2015    , 18:00 

    10     ,20/01/2015    , 18:45 

    11     ,20/01/2015    , 20:00

Resultado:

Data Hora Turno
20/01/201513:00Turno das 13
20/01/201514:15Turno das 13
20/01/201515:00Turno das 13
20/01/201516:15Turno das 13
20/01/201516:30Turno das 13
20/01/201517:15Turno das 13
20/01/201517:30Turno das 13
20/01/201517:45Turno das 13
20/01/201518:00Turno das 13
20/01/201518:45Turno das 13
20/01/201520:00Turno das 19
furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Segue script

Atendimentos:

LOAD * INLINE [ 

Paciente   ,Data          , Hora 

    1      ,20/01/2015    , 13:00 

    2      ,20/01/2015    , 14:15 

    3      ,20/01/2015    , 15:00 

    4      ,20/01/2015    , 16:15 

    5      ,20/01/2015    , 16:30 

    6      ,20/01/2015    , 17:15 

    7      ,20/01/2015    , 17:30 

    8      ,20/01/2015    , 17:45 

    9      ,20/01/2015    , 18:00 

    10     ,20/01/2015    , 18:45 

    11     ,20/01/2015    , 20:00 

]; 

Turno:

load * inline

[

Inicio, Fim    , Turno

  00:00, 00:59  , Turno das 19

  01:00, 06:59  , Turno da 1

  07:00, 12:59  , Turno das 7

  13:00, 18:59  , Turno das 13

  19:00, 23:59  , Turno das 19

];

left join (Atendimentos)

IntervalMatch(Hora) load

Inicio, Fim

resident Turno;

left join (Atendimentos)

load * resident Turno;

DROP Table Turno;

furtado@farolbi.com.br
luis_lorenzo
Contributor III
Contributor III
Author

Quase isso, até ai eu consegui ate chegar o meu problema principal é junto com estas informações colocar ainda quantos minutos ou horas foram trabalhados em cada turno com base na tabela PLANTÃO_MEDICO.

Assim consigo mensurar quantos atendimentos e quantos minutos trabalhou em cada um dos turnos.

Conseguiu me entender?

A disposição,