Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

manolegal

[Resolvido] COUNT com condição

Recommended Posts

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,

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 membros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.