Valores repetidos
Srs.,
Fiz uma query onde preciso relacionar os 5 processos com maior tempo de duração, para isso fiz o select abaixo:
select nome_processo,
start_time,
end_time,
tempo_execucao
from historico
where start_time between '01-03-2019' and '05-03-2019'
order by tempo_execucao desc limit 5
O problema é que o nome_processo aparece mais de uma vez neste select
ex:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 0:45:00
B 01-03-2019 01-03-2019 0:40:00
A 02-03-2019 02-03-2019 0:30:00
D 03-03-2019 03-03-2019 0:28:00
B 03-03-2019 03-03-2019 0:27:00
E na verdade o resultado que eu preciso seria:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 0:45:00
B 01-03-2019 01-03-2019 0:40:00
C 03-03-2019 03-03-2019 0:27:00
F 04-03-2019 04-03-2019 0:22:00
H 05-03-2019 05-03-2019 0:20:00
Como faço para não trazer registros duplicados e ordenar por tempo de execução.
Desde já agradeço.
Fiz uma query onde preciso relacionar os 5 processos com maior tempo de duração, para isso fiz o select abaixo:
select nome_processo,
start_time,
end_time,
tempo_execucao
from historico
where start_time between '01-03-2019' and '05-03-2019'
order by tempo_execucao desc limit 5
O problema é que o nome_processo aparece mais de uma vez neste select
ex:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 0:45:00
B 01-03-2019 01-03-2019 0:40:00
A 02-03-2019 02-03-2019 0:30:00
D 03-03-2019 03-03-2019 0:28:00
B 03-03-2019 03-03-2019 0:27:00
E na verdade o resultado que eu preciso seria:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 0:45:00
B 01-03-2019 01-03-2019 0:40:00
C 03-03-2019 03-03-2019 0:27:00
F 04-03-2019 04-03-2019 0:22:00
H 05-03-2019 05-03-2019 0:20:00
Como faço para não trazer registros duplicados e ordenar por tempo de execução.
Desde já agradeço.
Tulio Norberto
Curtidas 0
Melhor post
Hélio Devmedia
24/03/2019
Olá Tulio, tudo bem?
Este SQL é simples demais e não deveria estar dando este tipo de erro, exceto se, realmente existe processos com o mesmo nome ou o índice está corrompido fazendo com que na busca ele repita o nome.
Sugiro verificar se não está havendo processos com o mesmo nome e sugiro também excluir e criar um novo index para fazer esta consulta.]
Qualquer coisa, pode perguntar novamente, só não esqueça de curtir o tópico para que eu receba a notificação que você respondeu.
Espero ter ajudado,
Um forte abraço e fique com Deus!
Este SQL é simples demais e não deveria estar dando este tipo de erro, exceto se, realmente existe processos com o mesmo nome ou o índice está corrompido fazendo com que na busca ele repita o nome.
Sugiro verificar se não está havendo processos com o mesmo nome e sugiro também excluir e criar um novo index para fazer esta consulta.]
Qualquer coisa, pode perguntar novamente, só não esqueça de curtir o tópico para que eu receba a notificação que você respondeu.
Espero ter ajudado,
Um forte abraço e fique com Deus!
GOSTEI 1
Mais Respostas
Tulio Norberto
23/03/2019
Olá Tulio, tudo bem?
Este SQL é simples demais e não deveria estar dando este tipo de erro, exceto se, realmente existe processos com o mesmo nome ou o índice está corrompido fazendo com que na busca ele repita o nome.
Sugiro verificar se não está havendo processos com o mesmo nome e sugiro também excluir e criar um novo index para fazer esta consulta.]
Qualquer coisa, pode perguntar novamente, só não esqueça de curtir o tópico para que eu receba a notificação que você respondeu.
Espero ter ajudado,
Um forte abraço e fique com Deus!
Este SQL é simples demais e não deveria estar dando este tipo de erro, exceto se, realmente existe processos com o mesmo nome ou o índice está corrompido fazendo com que na busca ele repita o nome.
Sugiro verificar se não está havendo processos com o mesmo nome e sugiro também excluir e criar um novo index para fazer esta consulta.]
Qualquer coisa, pode perguntar novamente, só não esqueça de curtir o tópico para que eu receba a notificação que você respondeu.
Espero ter ajudado,
Um forte abraço e fique com Deus!
GOSTEI 0
Tulio Norberto
23/03/2019
Hélio, boa tarde
Existe sim valores repetidos, porque o processos executam diariamente
por exemplo:
O processo "A" executa todos os dias, o "B" o "C" o "D" e assim por diante. Na semana preciso saber os 5 processos que levaram mais tempo para executar.
Vamos supor que o processo "A" leve sempre 03 horas e os demais não passem de 30 minutos a não ser por algum problema, como eles executam diariamente se eu executar esta query vai ser exibido 05 vezes o Nome_processo "A" com o seu respectivo tempo de execução. Mas o que eu preciso são os 5 processos mais demorados sem repetir o nome_processo.
select nome_processo,
start_time,
end_time,
tempo_execucao
from historico
where start_time between '01-03-2019' and '05-03-2019'
order by tempo_execucao desc limit 5
Como ficaria o resultado no exemplo citado:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 3:45:00
A 04-03-2019 04-03-2019 3:40:00
A 02-03-2019 02-03-2019 3:30:00
A 05-03-2019 05-03-2019 3:28:00
A 03-03-2019 03-03-2019 3:27:00
E na verdade o resultado que eu preciso que seria:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 3:45:00
B 01-03-2019 01-03-2019 0:40:00
C 03-03-2019 03-03-2019 0:27:00
F 02-03-2019 02-03-2019 0:22:00
H 05-03-2019 05-03-2019 0:20:00
Existe sim valores repetidos, porque o processos executam diariamente
por exemplo:
O processo "A" executa todos os dias, o "B" o "C" o "D" e assim por diante. Na semana preciso saber os 5 processos que levaram mais tempo para executar.
Vamos supor que o processo "A" leve sempre 03 horas e os demais não passem de 30 minutos a não ser por algum problema, como eles executam diariamente se eu executar esta query vai ser exibido 05 vezes o Nome_processo "A" com o seu respectivo tempo de execução. Mas o que eu preciso são os 5 processos mais demorados sem repetir o nome_processo.
select nome_processo,
start_time,
end_time,
tempo_execucao
from historico
where start_time between '01-03-2019' and '05-03-2019'
order by tempo_execucao desc limit 5
Como ficaria o resultado no exemplo citado:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 3:45:00
A 04-03-2019 04-03-2019 3:40:00
A 02-03-2019 02-03-2019 3:30:00
A 05-03-2019 05-03-2019 3:28:00
A 03-03-2019 03-03-2019 3:27:00
E na verdade o resultado que eu preciso que seria:
nome_processo start_time end_time tempo_execução
A 01-03-2019 01-03-2019 3:45:00
B 01-03-2019 01-03-2019 0:40:00
C 03-03-2019 03-03-2019 0:27:00
F 02-03-2019 02-03-2019 0:22:00
H 05-03-2019 05-03-2019 0:20:00
GOSTEI 0
Hélio Devmedia
23/03/2019
Então Tulio, com este sql que você postou não é possível, e ainda ficou difícil de entender, talvez temos que reformular a idéia do que buscar:
Se você quer os 5 primeiros processos que mais demoraram para executar durante um período de 5 dias ('01-03-2019' and '05-03-2019' ) e o processo A, todos os dias foi o mais demorado, então o Processo A obrigatoriamente vai aparecer 5 vezes porque mesmo ele chamando A, para o banco, são registros diferentes e são os que mais demoraram.
Se por outro lado você quer somar o total de processos e ver qual demorou mais, deveria fazer assim:
Este código soma o tempo dos processos antes de ordenar os 5 primeiros.
Espero ter dado um norte...
Se você quer os 5 primeiros processos que mais demoraram para executar durante um período de 5 dias ('01-03-2019' and '05-03-2019' ) e o processo A, todos os dias foi o mais demorado, então o Processo A obrigatoriamente vai aparecer 5 vezes porque mesmo ele chamando A, para o banco, são registros diferentes e são os que mais demoraram.
Se por outro lado você quer somar o total de processos e ver qual demorou mais, deveria fazer assim:
select * from ( select nome_processo, SUM(tempo_execucao) from historico where start_time between '01-03-2019' and '05-03-2019' group By nome_processo ) order by tempo_execucao desc limit 5
Este código soma o tempo dos processos antes de ordenar os 5 primeiros.
Espero ter dado um norte...
GOSTEI 0