27/03/2012, 14:06
|
Colaborador | | Fecha de Ingreso: enero-2007 Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses Puntos: 447 | |
Respuesta: Se puede en un Query hacer un avg para varios campos? Hola mixsolojoomla:
No estás tan equivocad@ con la consulta que planteas... creo que sólo era cuestión que revisaras un poco más e hicieras los ajustes necesarios:
Código:
mysql> SELECT * FROM prom;
+------------+---------+---------+---------+---------+---------+---------+---------+
| variedades | ciudad2 | ciudad3 | ciudad4 | ciudad5 | ciudad6 | ciudad7 | ciudad8 |
+------------+---------+---------+---------+---------+---------+---------+---------+
| variedad1 | 300.600 | 291.333 | 0.000 | 296.000 | 0.000 | 280.000 | 287.666
| variedad2 | 0.000 | 0.000 | 0.000 | 740.000 | 0.000 | 0.000 | 719.100 |
| variedad3 | 0.000 | 0.000 | 45.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| variedad4 | 0.000 | 0.000 | 0.000 | 0.000 | 5.000 | 0.000 | 0.000 |
+------------+---------+---------+---------+---------+---------+---------+---------+
4 rows in set (0.00 sec)
mysql> SELECT variedades, ciudad2, ciudad3, ciudad4, ciudad5, ciudad6,
-> ciudad7,ciudad8,
-> (suma / 7) prom_real,
-> (suma / cuenta_no_vacios) prom_especial FROM
-> (SELECT
-> variedades, ciudad2, ciudad3, ciudad4, ciudad5, ciudad6, ciudad7, ciudad8,
-> SUM(ciudad2+ciudad3+ciudad4+ciudad5+ciudad6+ciudad7+ciudad8) suma,
-> SUM(IF (ciudad2 != 0, 1, 0)+IF (ciudad3 != 0, 1, 0)+IF (ciudad4 != 0, 1,0)+
-> IF (ciudad5 != 0, 1, 0)+IF (ciudad6 != 0, 1, 0)+IF (ciudad7 != 0, 1, 0)+
-> IF (ciudad8 != 0, 1, 0)) cuenta_no_vacios
-> FROM prom
-> GROUP BY variedades
-> ) T;
+------------+---------+---------+---------+---------+---------+---------+---------+-------------+---------------+
| variedades | ciudad2 | ciudad3 | ciudad4 | ciudad5 | ciudad6 | ciudad7 | ciudad8 | prom_real | prom_especial |
+------------+---------+---------+---------+---------+---------+---------+---------+-------------+---------------+
| variedad1 | 300.600 | 291.333 | 0.000 | 296.000 | 0.000 | 280.000 | 287.666 | 207.9427143 | 291.1198000 |
| variedad2 | 0.000 | 0.000 | 0.000 | 740.000 | 0.000 | 0.000 | 719.100 | 208.4428571 | 729.5500000 |
| variedad3 | 0.000 | 0.000 | 45.000 | 0.000 | 0.000 | 0.000 | 0.000 | 6.4285714 | 45.0000000 |
| variedad4 | 0.000 | 0.000 | 0.000 | 0.000 | 5.000 | 0.000 | 0.000 | 0.7142857 | 5.0000000 |
+------------+---------+---------+---------+---------+---------+---------+---------+-------------+---------------+
4 rows in set (0.00 sec)
Es posible que esta no sea la forma más eficiente de hacerlo, pero creo que debe funcionar.
Dale un vistazo y nos comentas.
Saludo
Leo. |