Pesquisar na Comunidade
Mostrando resultados para as tags ''acumular''.
Encontrado 2 registros
-
Bom dia pessoal AJUDA por favor , há dois dias estou tentando acumular o tempo parado do veículo, através das informações que recebo do rastreador, é o seguinte... a cada 1min recebo as informações, uma delas é se o veiculo está parado 0 = parado , 1 = em movimento, entre as outras colunas tem uma data_hora (dd/mm/yy hh:mm), a cada recebimento e SE parado , preciso ficar acumulando o tempo parado do mesmo!! Certamente já pensei dessas maneiras, ao receber uma nova informação e SE parado, vou procurar na tabela de todas as informações, a último momento parado do mesmo veículo , daí subtraio a hora atual com a hora do momento anterior, exemplo , peguei a informação atual PARADO agora as 08:00, fui buscar na tabela a ultima informação PARADO, registrado anteriormente, que foi as 07:30, então entre eles tem um tempo de 30min, daí teoricamente ele ficou parado 30min. O problema é que essas informações vou solicitar a cada 1min e registrar tudo no banco, esse banco logo logo, vai crescer muito, um exemplo aqui é uma tabala do sistema antigo, tem mais de 16 milhões, imagina a cada 1min eu ter que fazer essa consulta, pegar o ultimo registro do determinado veiculo PARADO nessa tabela. Fora que ao atualiza a janela do sistema (WEB, Java , Spring), preciso fazer além desse filtro os outros.. Outra Maneira seria criar uma tabela separada, (Tempo_Parado), e registrar o momento (data_hora) , veiculo_id, daí a tabela fica um pouco menor que a do rastreio propriamente dito, então a cada 1min se o veiculo tiver parado, vou nessa tabela e procuro o momento da ultima parada dele, e vou acumulando. Mas tem um problema nessas teoria.. imagina só... o cara parou as 8:00 daí fui acumulando ate as 8:30, já tenho aí 30min parado, agora o cara começou a se movimentar... rodou uns 30min e o cara para novamente...... ou seja PAROU as 9:00, quando eu for pegar a última hora que ele parou o sistema vai trazer 08:30, e se eu for usar a técnica acima citado por mim, o sistema vai calcular assim , ultima parada as 8:30, pardou agora as 9:00, tempo parado MAIS 30min... espero que vocês tenham entendido...... Pensando um pouco agora, eu poderia quando filtrar as ultimas paradas, sempre pegar as duas 2 ultimas informações, e se a penúltima informação era EM MOVIMENTO, ja sei que essa parada agora é uma parada START e não um continuação de PARADO, tipo... 07:30 Parado 08:00 Parado --------30min 08:10 Movimento 08:30 Parado se for pelo sistema, ele vai calcular 8:30 - 8:00 vai trazer 30min PARADO, que não é (nessa última situação ele nao ficou parado 30min), na verdade ele parou agora o que pensei nesse caso foi, pegar esses 2 últimos, e caso o penúltimo seja EM MOVIMENTO, desconsiderar o calculo e somente gravar que parou, daí na próxima consulta PARADO as 8:50, o sistema vai me trazer 8:50 - 8:30 = 20min parado. Assim acredito que funcione, porém vai da trabalho e pesando no banco terá muitas consultas em tabelas grandes de volume!!! Qualquer dica de vocês pode ajudar a melhorar, deve ter algo mais simples!!! Agradeço desde já!!!! Bom dia!!!
-
Boa noite ! Tenho a seguinte query abaixo que me retorna a origem , a contagem e o percentual de uma consulta. SELECT origem, count(*) AS contagem, count(origem) / (SELECT count(*) FROM atendimento_cad) * 100 as percentual FROM atendimento_cad GROUP BY origem order by percentual desc origem contagem percentual 2000 5866 34.9875 3000 3099 18.4838 4000 2621 15.6328 porém preciso criar uma nova tabela para me retornar a soma do percentual ( acumulativo )ex: origem contagem percentual Acumulado 2000 5866 34.9875 34.9875 3000 3099 18.4838 53.4713 4000 2621 15.6328 69.1041 e assim por diante até 100% Alguém pode me ajudar?
-
- soma
- percentual
-
(e mais 2 )
Tags: