22 Replies Latest reply: Jul 22, 2016 8:24 AM by Clever Anjos RSS

    Como dividir Horários

    Luis Carlos Lorenzo

      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!

        • Re: Como dividir Horários
          Massimo Grossi

          my idea in the attachment

           

          1.png

          • Re: Como dividir Horários
            Alessandro Furtado

            Boa noite Luis Loreno.

             

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

            • Re: Como dividir Horários
              Fernando Tonial

              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.

                • Re: Como dividir Horários
                  Luis Carlos Lorenzo

                  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,

                    • Re: Como dividir Horários
                      Alessandro Furtado

                      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
                        • Re: Como dividir Horários
                          Alessandro Furtado

                          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;

                            • Re: Como dividir Horários
                              Luis Carlos Lorenzo

                              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,

                                  • Re: Como dividir Horários
                                    Luis Carlos Lorenzo

                                    Boa Tarde,

                                     

                                    Vinculo de turno com atendimento consegui realizar so que preciso incluir horas trabalhadas com base em inicio e fim.

                                    Coloquei abaixo um exemplo:

                                     

                                     

                                    Atendimentos:

                                    LOAD * INLINE [

                                    Paciente  ,Data          , Hora    Medico

                                        1      ,20/01/2015    , 08:00  ,  34

                                        2      ,20/01/2015    , 14:15  , 45

                                        3      ,20/01/2015    , 09:00  , 34

                                        4      ,20/01/2015    , 10:15  , 34

                                        5      ,20/01/2015    , 12:30  , 12

                                        6      ,20/01/2015    , 17:15  , 10

                                        7      ,20/01/2015    , 17:30  , 10

                                        8      ,20/01/2015    , 19:45  , 34

                                        9      ,20/01/2015    , 18:00  , 8

                                        10    ,20/01/2015    , 09:45  , 12

                                        11    ,20/01/2015    , 20:00  , 45

                                        12  ,21/01/2015    , 00:25  ,    34

                                        13  ,21/01/2015    , 00:11  ,    45

                                    ];

                                     

                                     

                                    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;

                                     

                                     

                                     

                                     

                                    Plantão:

                                    LOAD * INLINE [

                                    Medico  ,Data_Inicio_Plantão      , Hora_Inicio , Dt_Fim_Plantao ,  Hora_Fim

                                        8      ,20/01/2015    , 12:50  ,      20/01/2015 , 19:00

                                        10      ,20/01/2015    , 13:02  ,      20/01/2015    , 19:30

                                        12      ,20/01/2015    , 07:02  ,      20/01/2015    , 13:05

                                        34      ,20/01/2015    , 07:35  ,      20/01/2015    , 13:40

                                        45      ,20/01/2015    , 13:30  ,      21/01/2015    , 01:30

                                        34      ,20/01/2015    , 19:00  ,      21/01/2015    , 02:10

                                    ];

                                     

                                     

                                    A disposição,

                        • Re: Como dividir Horários
                          Luis Carlos Lorenzo

                          Conseguiu entender minha dúvida afurtado?

                          consegui explicar qual é minha dificuldade?

                           

                          A disposição,

                          • Re: Como dividir Horários
                            Luis Carlos Lorenzo

                            Bom dia Pessoal,

                             

                            Na verdade é o que o afurtado passou so que na aplicação deve tah acontecendo ainda de um médico cair o mesmo turno em dois dias conforme descrevi acima.

                             

                            Preciso tentar arrumar isso apenas que a ideia seria esta mesmo.

                             

                            A disposição e agradeço se puderem me ajudar.

                            • Re: Como dividir Horários
                              Pablo Labbe

                              Olá Luis,

                               

                              Este tópico está aberto a 2 meses. Você conseguiu chegar a solução ?

                                • Re: Como dividir Horários
                                  Luis Carlos Lorenzo

                                  Oi pablolabbe,

                                   

                                  Consegui o resultado esperado..quem conseguiu algo bem próximo foi o afurtado, porém a formula dele duplica o mesmo médico no quesito de dividir os mesmos horários em dois dias.

                                   

                                  Ex: Médico 34 que começa seu turno as 19:00 do dia 20/01 e termina as 02:10 do dia 21/01.

                                  isso significa que ele trabalhou no Turno das 19:00-01:00 do dia 20, durante 6 Hrs, MAIS O QUE FALTA ATE AS 02:10 do dia 21/01 quando ele bateu o ponto de saída, ou seja no turno 01:01-07:00 do dia 21, que ficara o valor das 01:00 as 02:10, trabalhando 1h e 10 min neste turno neste dia.

                                  Se olha a parte da 01:01 as 02:10 deve estar apenas no dia 21 e esta aparecendo nos dois conforme imagem:

                                   

                                   

                                  Turnos.jpg

                                   

                                  Obrigado se alguém puder me ajudar

                                • Re: Como dividir Horários
                                  Clever Anjos

                                  Já conseguiu achar uma solução?

                                  Se sim, marque uma das respostas como correta para ajudar a manter os tópicos organizados.

                                  Como obter ajuda? Leia antes de postar