Hola a todos,
Tengo una duda es posible sacar un promedio o un conteo de varios campos de una tabla?
algo como
avg(campo1, campo2, campo3);
o
count(campo1, campo2, campo3);
De antemano gracias por la ayuda.
Saludos
| |||
Se puede en un Query hacer un avg para varios campos? Hola a todos, Tengo una duda es posible sacar un promedio o un conteo de varios campos de una tabla? algo como avg(campo1, campo2, campo3); o count(campo1, campo2, campo3); De antemano gracias por la ayuda. Saludos Última edición por mixsolojoomla; 27/03/2012 a las 10:45 Razón: mejor titulo |
| ||||
Respuesta: Se puede en un Query hacer un avg para varios campos? No, se aplica la función que necesites a cada uno de los campos individualmente. Lo que si puedes hacer es aplicarlo sobre el resultado de una operación aritmética que involucre más de un campo, en tanto la operación sea consistente:
Código MySQL:
Ver original
Código MySQL:
Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) Última edición por gnzsoloyo; 27/03/2012 a las 12:09 |
| |||
Respuesta: Se puede en un Query hacer un avg para varios campos? Hola, puedes darle un vistazo a este post, talvez aplique a tu necesidad. http://www.forosdelweb.com/f86/union...-media-983468/ |
| |||
Respuesta: Se puede en un Query hacer un avg para varios campos? Gracias a gnzsoloyo y lenincasco por sus respuestas. Realmente la situación es esta: Estoy tratando de hacer el promedio de los valores diferentes de cero de las variedades en cada ciudad he intentado hacerlo asi: SELECT `variedad`,`ciudad1`,`ciudad2`, `ciudad3`, `ciudad4`, `ciudad5`, `ciudad6`, `ciudad7`, `ciudad8`, sum(if (ciudad1>0,ciudad1,0) + if (ciudad2>0,ciudad2,0)+if (`ciudad3`>0,`ciudad3`,0) + if (`ciudad4`>0,`ciudad4`,0)+if (`ciudad5`>0,`ciudad5`,0) + if (`ciudad6`>0,`ciudad6`,0)+if (`ciudad7`>0,`ciudad7`,0) ) as suma, count(if (`ciudad1`>0,1,0) + 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)) as cuenta FROM `prom` group by variedad Pero el resultado que me da en la cuenta es errado. Espero haber sido claro. Agradezco de antemano toda la ayuda que me puedan brindar. Saludos Última edición por mixsolojoomla; 27/03/2012 a las 13:57 Razón: correccion |
| |||
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:
Es posible que esta no sea la forma más eficiente de hacerlo, pero creo que debe funcionar.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) Dale un vistazo y nos comentas. Saludo Leo. |
| |||
Respuesta: Se puede en un Query hacer un avg para varios campos? Hola, otra alternativa.
Código MySQL:
Ver original puse el ejemplo con 4 ciudades nada mas. |
| |||
Respuesta: Se puede en un Query hacer un avg para varios campos? Muchas gracias leonardo_josue y LENINCASCO, Me ayudaron muchisimo en la solución. Mi problema estaba en el conteo y la solución era sumar de 1 en 1 y no contar. Mil y mil gracias. Saludos |
Etiquetas: |