MySQL - consulta para contar edades que esten en un rango

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

consulta para contar edades que esten en un rango

Publicado por Jonathan (6 intervenciones) el 22/04/2020 00:11:00
Buenas tengo una duda para poder contar la cantidad de registros que son mayores a un rango de edad y que sean de sexo 'masculino'

por ahora tengo esta consulta que me muestra los campos de interes

1
SELECT id_cc,sexo, YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1, IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento), IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0)) as edades from jefes_familia


consult





lo que quiero es que me de como resultado algo como esto por ejemplo quiero saber la cantidad de personas de sexo femenino que estan entre 18 - 45 años de edad

utilize esta consulta
1
SELECT id_cc, count(YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1, IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento), IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0))) as femeninas from jefes_familia GROUP BY id_cc HAVING femeninas BETWEEN 18 AND 45

cantidad

pero no funciona como deberia ya que me esta arrojando la cantidad de registros sin el condicional de edades
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

consulta para contar edades que esten en un rango

Publicado por Francisco (73 intervenciones) el 22/04/2020 17:48:49
Hola

Intenta con esto


1
2
3
4
5
6
7
8
9
10
11
12
WITH t_jf AS (
    SELECT
        id_cc,
        sexo,
        YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1,
        IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento), IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0)) AS edades
    FROM jefes_familia
)
SELECT id_cc, count(*) AS femeninas
FROM t_jf
WHERE edades BETWEEN 18 AND 45 AND sexo = 'femenino'
GROUP BY id_cc;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

consulta para contar edades que esten en un rango

Publicado por Jonathan (6 intervenciones) el 23/04/2020 06:35:17
gracias amigo por responder aunque ya lo habia resuelto con este codigo y funciona

cuenta las personas entre 20 y 42 años que sean de sexo masculino

1
SELECT id_cc,count(*) FROM (SELECT id_cc,YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1, IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento), IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0)) AS edades from jefes_familia WHERE sexo = 'masculino' HAVING edades BETWEEN 20 AND 42) as cantidad GROUP BY id_cc

res

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar