TransWikia.com

Agrupar registros según fecha

Stack Overflow en español Asked by Jose Huerta on December 13, 2020

días, noches espero que me puedan ayudar con poco con lo siguiente, la idea es lograr agrupar los registros usando mysql promediando y tenerlo por rangos de 1 minuto, 5 minutos, 15 minutos, 30 minutos, 60 minuts etc.

Actualmente estoy trabajando con un proyecto de arduino e iot donde es un jardín inteligente este envía un registro sobre sus sensores cada 10 segundos a la base de datos todo el tiempo, tengo una plataforma escrita en laravel para poder leer esos datos y representarlos en gráficas basados en el promedio estoy intentando lo siguiente

un ejemplo de mi tabla sensor_data

id, sensor_id, value, created_at

1, 1, 20, 2020-05-05 16:00:23

2, 1, 23, 2020-05-05 16:00:33

3, 1, 25, 2020-05-05 16:00:43

4, 1, 23, 2020-05-05 16:00:53

5, 1, 20, 2020-05-05 16:01:03

y mi consulta para obtenter el promedio en intervalos de 1 minuto es la siguiente

SELECT sensor_id, ROUND(AVG(value)) as average, DATE_FORMAT(created_at, '%Y/%m/%d %H:%i')) as created FROM sensor_data WHERE value > 0 AND value < 1024 AND sensor_id=1 GROUP BY created ORDER BY created DESC

Y con esto obtengo el promedio de cada minuto, pero la duda aqui es que otra forma exise o me recomiendan para poder tener intervalos de 5, 15 o 30 minutos? ya que no puedo agruparlos con el created debido a que uso la fecha para separarlos.

Espero haberme explicado.

One Answer

Te propongo algo así:

SELECT sensor_id, ROUND(AVG(value)) as average,
  CONCAT(
    DATE_FORMAT(created_at, '%Y/%m/%d %H:'),
    ROUND(MINUTE(created_at)/15)*15
  ) as created 
  FROM sensor_data 
  WHERE value > 0 AND value < 1024 AND sensor_id=1 
  GROUP BY created ORDER BY created DESC;

De 00 a 15 te lo agrupa en 00, de 15 a 30 en 15 y así sucesivamente

Para 1, 5, 30 y 60, sustituye el 15 por estas cantidades

Answered by David JP on December 13, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP