Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cristianoz

Concatenar campos de horarios

Recommended Posts

Pessoal Bom dia,

estou com um problema a um tempo, e não estou conseguindo encontrar uma forma de resolve-lo

é o seguinte:

eu tenho uma tabela que possui determinados horarios de acesso a um sistema. Ex.:

+-------+

| hora |

+-------+

| 07:59 |

| 08:31 |

| 08:37 |

| 08:38 |

| 08:39 |

| 08:41 |

| 08:42 |

| 08:43 |

| 08:44 |

| 08:59 |

| 09:00 |

| 09:01 |

+-------+

 

O objetivo é fazer um select somando todos os minutos (caso a diferença entre os horarios seja de 1 minuto) e mostrar o primeiro horario o ultimo horario e o total.

Caso a diferença de um horario para outro seja maior de um minuto, devera ser contabilizado somente 1 minuto. O retorno da tabela acima deve ser o seguinte:

 

+-------------------------------+

| hora_ini | hora_fim | TOTAL |

+-------------------------------+

| 07:59 | 07:59 | 1 |

| 08:31 | 08:31 | 1 |

| 08:37 | 08:39 | 2 |

| 08:41 | 08:44 | 3 |

| 08:59 | 09:01 | 2 |

---------------------------------

 

Será que alguem pode me dar uma luz por favor?

Agradeço antecipadamente pela atenção de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

select min(a_hora) inicio, max(b_hora)fim, count(*) minutos

from (

select

a_hora, b_hora, anterior, if(a_hora = anterior,@b,@b:=@b+1) grupo

from

(select @b:=0)y,

(

select min(a_hora) a_hora, max(b_hora)b_hora , min(anterior) anterior from

(

select t1.hora a_hora , t2.hora b_hora , @a anterior,

@a:= t2.hora proximo

from test.tabela t1 , test.tabela t2, (select @a:='00:00:00') t3

where

minute(timediff(t2.hora,t1.hora)) in (0,1)

and hour(timediff(t2.hora,t1.hora)) = 0

and t1.hora <= t2.hora

order by

t1.hora

)z

group by proximo

)z

)y

group by grupo

 

 

 

 

 

apesar disso de 8:59 até 9:01 acho q tem 3 minutos :P, se você discordar você faz um if no count(*) la em cima if(count(*) -1 = 0, 1, count(*) -1) minutos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.