PDA

Ver la Versión Completa : calculo de porcentaje


valiant_crps
03-04-2008, 15:40:45
Hola amigos, tengo una tabla con el campo sexo (masculino y femenino) me gustaria saber como calcular el porcentaje de hombres y mujeres con una sola consulta sql.

saludos y gracias de antemano

BlueSteel
03-04-2008, 15:47:45
Hola amigos, tengo una tabla con el campo sexo (masculino y femenino) me gustaria saber como calcular el porcentaje de hombres y mujeres con una sola consulta sql.

saludos y gracias de antemano


Hola valiant_crps

Primero que nada,,, te damos la Bienvenida al Club... y te invitamos a leer nuestra guia de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)...

con respecto a tu consulta... lo necesitas realizar desde algun motor de base de datos en específico...???

Tambien me gustaria saber si ya tienes el dato de cuantas personas son masculinas y cuantas son femenidas... o tienes que recorrer la tabla y preguntar en algun campo el sexo ???

Salu2:p:D

valiant_crps
03-04-2008, 15:52:55
Hola, gracias por la bienvenida:
Bueno necesito hacer esto desde mysql, puedo contar el total con una consulta y contar los hombres y mujeres desde otra, pero lo ideal para mi es hacerlo en una sola, donde pueda listar el porcentaje de hombres y mujeres, esto para optimizar mi codigo en php.

BlueSteel
03-04-2008, 16:09:13
Hola, gracias por la bienvenida:
Bueno necesito hacer esto desde mysql, puedo contar el total con una consulta y contar los hombres y mujeres desde otra, pero lo ideal para mi es hacerlo en una sola, donde pueda listar el porcentaje de hombres y mujeres, esto para optimizar mi codigo en php.

Pero si ya tienes el total de hombres y mujeres .. no necesitas realizar eso desde el SQL...

basta con % Hombre => ( Tot_Hombres / ( Tot_Hombres + Tot_Mujeres )) * 100
basta con % Mujeres => ( Tot_Mujeres / ( Tot_Hombres + Tot_Mujeres )) * 100

no se como se realiza esto en php.. pero matemáticamente es más facil...

salu2:p:D

valiant_crps
03-04-2008, 16:31:10
SELECT sexo, (count(sexo)/(select count(*) from mi_tabla))*100 as cantidad FROM mi_tabla GROUP BY sexo;

esa es la consulta que necesitaba a mas de alguien le va a servir , estoy seguro...

gracias por la ayuda :)

BlueSteel
03-04-2008, 17:36:35
SELECT sexo, (count(sexo)/(select count(*) from mi_tabla))*100 as cantidad FROM mi_tabla GROUP BY sexo;

esa es la consulta que necesitaba a mas de alguien le va a servir , estoy seguro...

gracias por la ayuda :)

Hola

estube probando tu sentencia SQL... pero siempre me entrega 0 ?? estas seguro que te funciona...


Select per_sexo,(Count(per_sexo)/(Select Count(1) As Total
From Persona))*100 as Porcentaje
From persona
Group by per_sexo


si ejecuto la sentencia anterior me entrega esto


per_sexo Porcentaje
FE 0
MA 0


Tambien ejecute esta sentencia... para que me muestre la cantidad y el porcentaje


Select per_sexo, Count(per_sexo)as Cantidad, (Count(per_sexo)/(Select Count(1) As Total
From Persona))*100 as Porcentaje
From persona
Group by per_sexo


y me muestra esto

per_sexo Cantidad Porcentaje
FE 11 0
MA 15 0



Salu2

valiant_crps
04-04-2008, 04:13:29
hola tu utilizas count(1) yo ocupo count(*) en realidad no tengo donde probarlo en este momento... pero la consulta si funciona , fijate de escribirla correctamente

saludos

otra cosa:

la version anterior de mysql 4.1.xx no permite hacer consultas anidadas asi que ojo con eso tambien o mysql lanzara un error

BlueSteel
04-04-2008, 16:24:42
hola tu utilizas count(1) yo ocupo count(*) en realidad no tengo donde probarlo en este momento... pero la consulta si funciona , fijate de escribirla correctamente


No tiene nada que ver eso.... pues si pongo esto


Select per_sexo, Count(1)as Cantidad, (Count(per_sexo)/(Select Count(*) As Total
From Persona))*100 as Porcentaje
From persona
Group by per_sexo


igual me entrega esto

per_sexo Cantidad Porcentaje
FE 11 0
MA 15 0


Eso fue un truco que me enseñaron en algun cursillo de SQL 2005... que el usar el Count(*) y el Count(1) te entregan un mismo valor, siendo este último más rápido en el tiempo que demora en obtener el resultado...


la version anterior de mysql 4.1.xx no permite hacer consultas anidadas asi que ojo con eso tambien o mysql lanzara un error

El problema puede ser que lo estoy probando en SQL Server 2000, y tu sentencia en MySQL si funciona....

Pero como en el post nunca especificastes que lo necesitabas en MySQL... solo que querias una sentencia SQL...

Salu2

valiant_crps
05-04-2008, 02:07:52
Cita:
Empezado por valiant_crps http://www.clubdelphi.com/foros/images/botones/viewpost.gif (http://www.clubdelphi.com/foros/showthread.php?p=277278#post277278)
Hola, gracias por la bienvenida:
Bueno necesito hacer esto desde mysql, puedo contar el total ...


no creo que una misma consulta sql, te entregue valores distintos en motores de bases de datos distinto, pero ya todo salio bien y te doy gracias bluesteel por toda la preocupación y la buena disposicion para ayudar...

BlueSteel
07-04-2008, 05:18:51
no creo que una misma consulta sql, te entregue valores distintos en motores de bases de datos distinto, pero ya todo salio bien y te doy gracias bluesteel por toda la preocupación y la buena disposicion para ayudar...

si.. puede ser.. tendriamos que ver si a alguien más le funciona la sentencia en el SQL Server 2000 ... o le pasa lo mismo que a mi...

Tambien debo mencionar que no asimile el MySQL en tu pregunta

pero es que me quede con la pregunta inicial...

Hola amigos, tengo una tabla con el campo sexo (masculino y femenino) me gustaria saber como calcular el porcentaje de hombres y mujeres con una sola consulta sql.


bueno..ya sabes.. a veces uno lee pero no lograr asimilar lo que dicen....

Salu2:p:D

MaMu
07-04-2008, 08:16:52
otra cosa:

la version anterior de mysql 4.1.xx no permite hacer consultas anidadas asi que ojo con eso tambien o mysql lanzara un error

No entiendo, a que llamas consultas anidadas, a subconsultas?
Porque si es asi, yo utilizo la versión 4.0.xx de mySQL y casi todas mis aplicaciones usan subconsultas.


Select a.categoria,
(Select sum(debe) from caja t1
where t1.categoria = a.categoria and year(t1.fecha) = 2008) as egreso2008,
(Select sum(haber) from caja t2
where t2.categoria = a.categoria and year(t2.fecha) = 2008) as ingreso2008,
(Select sum(debe) from caja u1
where u1.categoria = a.categoria and year(u1.fecha) = 2007) as egreso2007,
(Select sum(haber) from caja u2
where u2.categoria = a.categoria and year(u2.fecha) = 2007) as ingreso2007
from parapersonales a


Ejecutado con mySQL 4.0.22

Saludos