Boa noite pessoal. Preciso montar uma consulta no SQL Server onde preciso obter a média de cada hora do dia. Atualmente as informações são registradas a cada 9 segundos conforme exemplo abaixo:
2021-05-26 21:17:14.757
2021-05-26 21:17:04.727
2021-05-26 21:16:54.787
2021-05-26 21:16:44.810…e assim por diante.
Sendo assim preciso obter a média por exemplo:
15:00 - ???
16:00 - ???
17:00 - ???
18:00 - ??? e assim por diante.
Alguem poderia dar alguma dica de como montar este script e obter essa média?
Obter a média de cada hora do dia com base em registros gravados
Olá Eliziario,
Conforme artigo https://kb.elipse.com.br/obtendo-medias-de-tempo-minutos-horas-e-dias-em-um-banco-de-dados-sql-server/, basta utilizar a sintaxe do item Médias por hora em um objeto consulta:
Outra alternativa seria utilizar os recursos do Relatório para calcular a média, conforme o artigo https://kb.elipse.com.br/kb37429-agrupando-dados-no-relatorio/.
Para agrupar por hora, utilizar no DataField a expressão ‘=Hour(E3TimeStamp)’.
Boa tarde Délio, olha aqui a instrução que montei, eu pensei em fazer um loop para os demais horários do dia.
USE BDHistoricos
GO
SELECT AVG(HIST_PENA11)
FROM ILH_MED_P1F01
WHERE E3TimeStamp
BETWEEN ‘2021-05-26 21:00’ AND ‘2021-05-26 22:00’
No exemplo acima vai pegar a média das 21 até as 22 horas. O que acha?
Boa tarde,
Para evitar a realização deste laço para os demais horários, eu ainda sugiro que utilize a sintaxe mencionada anteriormente.
Se desejar, basta inserir um filtro para retornar dias específicos (cláusula WHERE):
SELECT CAST(CAST(CAST(CAST(E3TimeStamp as float)*24 as bigint) as float)/24 as datetime) as Hora, AVG(Campo1) as Média
FROM Tabela
WHERE (E3TimeStamp >= #<%DataInicial%># AND E3TimeStamp <= #<%DataFinal%># )
GROUP BY CAST(CAST(CAST(CAST(E3TimeStamp as float)*24 as bigint) as float)/24 as datetime)
ORDER BY CAST(CAST(CAST(CAST(E3TimeStamp as float)*24 as bigint) as float)/24 as datetime)
Retornando dados apenas de um determinado dia:
Se ainda houver dúvidas, por gentileza envia sua aplicação para o meu e-mail.