Hola de nuevo:
Considero que es pertinente que definas también tu campo fechaHora como índice, ya que esta está relacionada directamente con el criterio de agrupación... con respecto a los intervalos, creo que la mejor opción es la de crear una tabla de intervalos, como lo hice en el ejemplo que te puse de ejemplo... Aquí te ahorrarías el tiempo del cálculo y creo que el INNER JOIN sería más rápido que hacer el cálculo:
Código MySQL:
Ver original+----------+-------+---------------------+
| atributo | Valor | FechaHora |
+----------+-------+---------------------+
| Media | 10.0 | 2012-06-18 17:40:00 |
| Media | 20.0 | 2012-06-18 17:40:12 |
| Media | 30.0 | 2012-06-18 17:45:34 |
| Media | 40.0 | 2012-06-18 18:00:00 |
| Media | 50.0 | 2012-06-18 18:59:59 |
+----------+-------+---------------------+
+-------------+-----------+-----------+
| intervaloId | limiteInf | limiteSup |
+-------------+-----------+-----------+
| 1 | 17:40:00 | 17:44:59 |
| 2 | 17:45:00 | 17:49:00 |
| 3 | 18:00:00 | 18:59:59 |
+-------------+-----------+-----------+
-> T.atributo
, SUM(T.valor
), I.limiteInf
, I.limiteSup
-> GROUP BY T.Atributo
, DATE(fechaHora
), I.limiteInf
, I.limiteSup
; +----------+--------------+-----------+-----------+
| atributo
| SUM(T.valor
) | limiteInf
| limiteSup
| +----------+--------------+-----------+-----------+
| Media | 30.0 | 17:40:00 | 17:44:59 |
| Media | 30.0 | 17:45:00 | 17:49:00 |
| Media | 90.0 | 18:00:00 | 18:59:59 |
+----------+--------------+-----------+-----------+
Haz también la prueba... independientemente que no sea la mejor opción, te servirá para practicar un poco y estoy seguro que en un futuro le podrás encontrar utilidad. Cuando pruebes, recuerda también definir indices en tu tabla de intervalos para los límites.
Saludos
Leo.