Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos
Tenho a seguinte consulta:
$Sql = "SELECT extract(year from age(pessoas.data_nascimento)) as idade,
COUNT (pessoas.sexo) as masculino_por_idade,
COUNT (pessoas.sexo) as feminino_por_idade,
COUNT (extract(year from age(pessoas.data_nascimento))) as pessoas_por_idade,
(SELECT COUNT (extract(year from age(pessoas.data_nascimento)))
FROM pessoas
WHERE pessoas.mostrar_dados = 'Sim'
AND pessoas.ativo = 'Sim'
AND pessoas.sexo = 'Masculino')
as total_homens,
(SELECT COUNT (extract(year from age(pessoas.data_nascimento)))
FROM pessoas
WHERE pessoas.mostrar_dados = 'Sim'
AND pessoas.ativo = 'Sim'
AND pessoas.sexo = 'Feminino')
as total_mulheres,
(SELECT COUNT (extract(year from age(pessoas.data_nascimento)))
FROM pessoas
WHERE pessoas.mostrar_dados = 'Sim'
AND pessoas.ativo = 'Sim')
as total_pessoas
FROM pessoas
WHERE pessoas.mostrar_dados = 'Sim'
AND pessoas.ativo = 'Sim'
GROUP BY idade
ORDER BY idade";
A consulta está retornando os dados. O q eu precisava era trazer o número de pessoas por sexo e por idade. As linhas a seguir trazem o mesmo resultado, ou seja o total por idade, mas eu precisava que cada uma trouxesse por sexo (masculino e feminino):
COUNT (pessoas.sexo) as masculino_por_idade,
COUNT (pessoas.sexo) as feminino_por_idade,
use case - Um exemplo simples
select sum((case when sexo='M' then 1 else 0 end)) masculino,
sum((case when sexo='F' then 1 else 0 end)) feminiino
from membrosObrigado amigos. Seguindo a dica do Motta, consegui resolver o problema:
SUM ((case when pessoas.sexo = 'Masculino' then 1 else 0 end)) as masculino_por_idade,
SUM ((case when pessoas.sexo = 'Feminino' then 1 else 0 end)) as feminino_por_idade,
Valeu.
Você não está comparando com nada ..
Ta faltando colocar o WHERE pessoas.sexo = 'Masculino' e o WHERE pessoas.sexo = 'Feminino'