KB-111510: Agrupando dados de uma Consulta por intervalo de tempo.

Descrição:

Como posso agrupar dados de uma Consulta do Elipse E3 por um intervalo de tempo pré-definido? Por exemplo, preciso que o tempo de amostragem dos dados seja de 45 minutos:

15:00, 15:45, 16:30, 17:15, etc.

 

Solução:

Antes de mais nada, a Consulta (ou Query) é o objeto que auxilia no processo de definição de consultas no Banco de Dados da aplicação. Toda vez que os objetos E3Browser ou Relatório buscam dados de um BD, é necessário enviar um comando; este comando informa quais os dados desejados para aquele objeto. Logo, sempre que uma aplicação precisar gravar ou buscar dados de um Banco de Dados, são enviados comandos SQL. A Consulta apresenta uma interface amigável, que permite não apenas a construção das consultas em uma forma gráfica mas também o acompanhamento imediato da sintaxe SQL que está sendo gerada.

Para agrupar dados em uma Consulta por um intervalo de tempo pré-definido, é possível utilizar utilizar um algoritmo que gera uma data arredondada dentro de intervalos de 45 minutos.

Utilizando as funções do SQL Server, conseguimos aplicar este algoritmo da seguinte forma:

SELECT
   DATEADD(MINUTE,(DATEDIFF(MINUTE, 0 , E3TimeStamp)/45)*45,0) AS E3TimeStamp, 
   SUM(Campo1) AS Campo1,
   COUNT(*) AS Total
FROM
   TemperaturasCamara001
GROUP BY
   DATEADD(MINUTE,(DATEDIFF(MINUTE, 0 , E3TimeStamp)/45)*45,0)
  ORDER BY E3TimeStamp ASC

Conforme imagem abaixo, é possível verificar que os dados foram apresentados respeitando o intervalo de tempo desejado (45 minutos):

Como agrupar dados em um intervalo de tempo

Como os registros são agrupados a cada 45 minutos, os demais campos que selecionados devem utilizar uma função de agregação; estas funções são AVG, COUNT, MAX, MIN e SUM.

O artigo relacionado, KB-13180: Consulta SQL retornando valores de 10 em 10 minutos, ilustra outra alternativa para retornar dados em um intervalo de tempo.

 

Artigos Relacionados:


Este artigo foi útil? Was this post helpful?
Yes0
No0

Leave a Reply

Your email address will not be published.Required fields are marked *