Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Estadisticas de una tabla

Estas en el tema de Estadisticas de una tabla en el foro de Mysql en Foros del Web. Hola amigos: es mi primer post; soy nuevo en el mundo MySQL, pero estoy trabajando con el hace tiempo, con CMS's pero nunca habia tenido ...
  #1 (permalink)  
Antiguo 25/10/2007, 07:58
Avatar de donRodrigo  
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 2
Pregunta Estadisticas de una tabla

Hola amigos:

es mi primer post; soy nuevo en el mundo MySQL, pero estoy trabajando con el hace tiempo, con CMS's pero nunca habia tenido que hacer cosas a mano. Mi pregunta es la siguiente:

Necesito extraer estadisticas de los datos personales de una tabla, se que se hace con COUNT() pero lo que necesito son varios datos; en la tabla tengo 'sexo' (como M o F), 'nivel_profesional' (una lista de 4 campos: basico, medio, universitario, master), provincia (16 campos) etc, lo que necesito es algo asi:

Provincia| No | Hombre | Mujer| basico | medio | universi | master |
..............|......|..............|..........|.. ..........|...........|...............|........... ..|
Habana |240| 120 | 120 | 20 | 120 | 80 | 20 |
..............|......|..............|..........|.. ..........|...........|...............|........... ..|
Tunas |200| 100 | 100 | 20 | 110 | 60 | 10 |

etc, la tabla es: 'afiliados, los campos que tengo son: id, nombre, apellido, provincia, sexo, nivel_profesional, etc.

con el count he podido hacerlo pero de manera individual, osea si quiero la cantidad, o el sexo etc, pero no doy para hacerlo de manera conjunta :(

espero puedan ayudarme. gracias

PD: Con la sentencia "UNION" logre relacionar dos consultas, funciona muy bien, pero se repiten los campos una y otra vez hacia abajo, osea, que me pone la provincia y el numero, luego me pone la provincia y el sexo hacia abajo, como puedo hacer para que salga hacia el lado??

Última edición por donRodrigo; 25/10/2007 a las 09:35 Razón: datos adicionales
  #2 (permalink)  
Antiguo 25/10/2007, 09:54
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: Estadisticas de una tabla

creo poder ayudarte pero es que no termno de entender ni la estrucutra de tu dd.bb ni lo que quieres obtener

si lo que quieres es sacar en un mismo resultado campos de 2 tablas diferentes pero comprandolos con un valor la cosa sería así:

SELECT afiliados.*, nivel_profesional.nivel FROM afiliados, nivel_profesional JOIN nivel_profesional ON afiliados.nivel=nivel_profesional.id
  #3 (permalink)  
Antiguo 26/10/2007, 07:06
Avatar de donRodrigo  
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Estadisticas de una tabla

Primero que nada, gracias por atenderme :)

Es una sola tabla, su extructura es muy simple (simplisima diria yo) un primer campo 'filiales', segundo 'nombre', tercero 'apellidos', cuarto 'sexo', algo asi:

filiales|nombre|apellido|sexo|
habana | jose | perez | M|
tunas | carlos | flores | M |
habana | juana | ososrio | F |

y asi hasta mas de 4000, lo que busco es poder sacar estadisticas de esta tabla, poder contarlos por filiales, ( eso ya lo pude hacer; $resultado= mysql_query("SELECT filial, COUNT(id) FROM $tabla GROUP BY filial",$conexion); y finciona perfectamente, me devuelve esto:

filial | cantidad |
habana | 40 |
tunas | 59 |
etc.


tambien puedo contarlos por sexo, lo hago asi: $resultado= mysql_query("SELECT filial, COUNT(id) FROM $tabla WHERE (sexo='M') GROUP BY filial ",$conexion); esto me devuelve:

filial | hombres |
habana | 20 |
tunas | 25 |
etc.

pero lo que no logro hacer, es una consulta que me devuelva las 2 cosas:

filial | cantidad | hombres |
habana | 40 | 20 |
tunas | 59 | 25 |
etc.

probe con UNION, pero me repite los datos asi :

filial | cantidad | hombres |
habana| 40 | |
tunas | 59 | |
habana| 20 | |
tunas | 25 | |
etc.

Como pueden ver primero cuenta la cantidad total y despues repite las filiales y cuenta la cantidad de hombres (esta es la salida real usando UNION).

Agradeceria ayuda al respecto :)
  #4 (permalink)  
Antiguo 27/10/2007, 07:24
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: Estadisticas de una tabla

prueba con JOIN ON con eso te sale seguro, si no te sale dimelo y trato de sacarte la query
  #5 (permalink)  
Antiguo 29/10/2007, 08:44
Avatar de donRodrigo  
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Estadisticas de una tabla

Cita:
Iniciado por dualklip Ver Mensaje
si no te sale dimelo y trato de sacarte la query
te agradeceria infinitamente que me dieras el query, como ya te dije soy nuevisimo!! en MySQL, tan solo corto y pego :)
  #6 (permalink)  
Antiguo 05/11/2007, 06:46
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: Estadisticas de una tabla

Una pregunta, en tu query ¿de donde sale la columna cantidad? pq en la query no esta reflejada
  #7 (permalink)  
Antiguo 05/11/2007, 08:09
Avatar de donRodrigo  
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Estadisticas de una tabla

Ya esta solucionadoooo!!!!

esto me lo dio un amigo en otro foro pero lo pongo aca por si alguien tiene el mismo problema;

el query seria asi:

SELECT departamento,
COUNT(id),
COUNT(IF(sexo='M',sexo,NULL)),
COUNT(IF(sexo='F',sexo,NULL))
FROM tabla
GROUP BY departamento
WITH ROLLUP

El count(IF(,,NULL)) puede contener cualquier cosa y repetirse hasta el cansancio para asi obtener los count que se necesesiten, le agregue el WITH ROLLUP para asi obtener la suma de los subtotales, en fin una maravilla!!!

Gracias a todos por ayudarme
  #8 (permalink)  
Antiguo 20/12/2011, 22:20
 
Fecha de Ingreso: enero-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Estadisticas de una tabla

Gracias por ese sql me ayudo muchoo excelente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:34.