Hola de nuevo jcayon:
Tal como lo describes, así es como funciona la consulta... En realidad el uso del agrupador AVG fue un tanto arbitrario, pero efectivamente, es para que te pusiera la media si es que tuvieras más de una entrada para cada sensor y atributo... si puedes asegurar que SÓLO TIENES UNA ENTRADA PARA CADA SENSOR, ATRIBUTO Y FECHA, en realidad podías utilizar SUM, MIN o MAX sin ningún problema:
Código MySQL:
Ver original -> sensor,
-> MIN(IF(atributo
= 'Media', valor
, NULL)) media
, -> MAX(IF(atributo
= 'Maxima', valor
, NULL)) maxima
, -> SUM(IF(atributo
= 'Minima', valor
, NULL)) minima
, -> fechaHora
+--------+-------+--------+--------+---------------------+
| sensor | media | maxima | minima | fechaHora |
+--------+-------+--------+--------+---------------------+
| 1 | 15.5 | 17.5 | 13.5 | 2012-06-18 17:40:00 |
+--------+-------+--------+--------+---------------------+
Sin embargo es necesario utilizar cualquiera de ellos (el que quieras), ya que de lo contrario sólo se evaluaría uno de los casos:
Código MySQL:
Ver original -> sensor,
-> IF(atributo
= 'Media', valor
, NULL) media
, -> IF(atributo
= 'Maxima', valor
, NULL) maxima
, -> IF(atributo
= 'Minima', valor
, NULL) minima
, -> fechaHora
+--------+-------+--------+--------+---------------------+
| sensor | media | maxima | minima | fechaHora |
+--------+-------+--------+--------+---------------------+
| 1 | 15.5 | NULL | NULL | 2012-06-18 17:
40:
00 | +--------+-------+--------+--------+---------------------+
En cuanto al rendimiento, revisa que tengas índices creados en tu tabla para mejorar el tiempo de ejecución. La opción que planteabas utilizando INNER JOIN's debería mucho más tardada que la te propongo, pero igual podrías probarla para ver si tiene un mejor rendimiento... sería más o menos así:
Código MySQL:
Ver original -> T1.sensor,
-> T1.valor media,
-> T2.valor maxima,
-> T3.valor minima,
-> T1.fechaHora
-> ON T1.sensor
= T2.sensor
AND T1.fechaHora
= T2.fechaHora
-> ON T1.sensor
= T3.sensor
AND T1.fechaHora
= T3.fechaHora
; +--------+-------+--------+--------+---------------------+
| sensor | media | maxima | minima | fechaHora |
+--------+-------+--------+--------+---------------------+
| 1 | 15.5 | 17.5 | 13.5 | 2012-06-18 17:40:00 |
+--------+-------+--------+--------+---------------------+
Pero te repito, podría apostar mi desayuno a que tendrá peor desempeño que la se agrupaciones condicionales.
Saludos
Leo.