Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

2 Queries em sequência

Olá Pessoal, estou com um problema aqui para resolver:

  • eu possuo uma primeira query que é esta
select motorista, id_ref,
MIN(horario_partida) as min,
MAX(horario_volta) as max from tb_rotas where motorista = 99 group by id_ref

Obs: esse where ali depois será removido, coloquei dessa forma apenas para segmentar entre diversos dados que tenho para testar agora, mas o group by continua.

Nessa query, ele me retorna o mínimo e máximo de tempo agrupado pelo id_ref. Então retorna assim:

motorista    id_ref    min                     max
99             2574     2018-02-02 20:00:00  2018-02-02 20:35:00
99             2579     2018-02-01 12:00:00  2018-02-01 12:20:00
99            2580     2018-02-01 14:00:00  2018-02-01 15:10:00
  • Na segunda query, eu gostaria de pegar esses resultados ali de min e max e contar eles transformando para segundos:
select SUM(TIME_TO_SEC(TIMEDIFF(max, min))) as tempo from tb_rotas group by motorista order by tempo desc

Veja que dentro do timediff o max e min tem que vir da primeira query, como se fosse queries em sequência. Porém não consigo resolver. Alguém poderia me ajudar ?

A ideia de todo esse código é somar os intervalos entra o min e max de tempo e agrupar por motoristas. Porém, eu faço a primeira query para pegar o intervalo min e max do id_ref que possui mais registros no caso.

Fico no aguardo, abraço!

2 respostas

Eu acho que se você fizer desta forma funciona:

select motorista, id_ref, SUM(TIME_TO_SEC(TIMEDIFF(max, min))) as tempo from 
(
select motorista, id_ref,
MIN(horario_partida) as min,
MAX(horario_volta) as max from tb_rotas where motorista = 99 group by id_ref) as tabela
solução!

Perfeito !! Funcionou, tive apenas que adicionar o group by motorista no final. Resultado final ficou

select motorista, id_ref, SUM(TIME_TO_SEC(TIMEDIFF(max, min))) as tempo from ( select motorista, id_ref, MIN(horario_partida) as min, MAX(horario_volta) as max from tb_rotas group by id_ref) as tabela group by motorista order by tempo desc

Obrigado pela ajuda. Abraço