Comando Sql para contar quantidade de pessoas por idade

2 respostas
fabiomarcilio

Boa tarde Pessoal,
Estou com um problema, preciso de um comando sql que me traga a quantidade de pessoas que existe em minha tabela pessoas, separada por idade e por empresa. Até aí tudo bem, consegui fazer uma consulta que funcionou beleza, exemplo abaixo:

‘Select COUNT(*) as total FROM tb_pessoas where ps_idade >= 29 and ps_idade <= 33 AND em_id =:r AND ps_sexo = “Feminino”’

mas agora preciso calcular levando em conta que a idade é armazenada no banco de dados como data de nascimento, então tenho que descobrir a idade antes de fazer a comparação. Segue abaixo:

‘Select COUNT(*) as total FROM tb_pessoas where (TIMESTAMPDIFF(YEAR, c.nascimento, NOW()) AS idade FROM tb_pessoas) idade >= 29 and idade <= 33 AND em_id =:r’

Não esta funcionando, acusa erro no alias idade, ja fiz de tudo e não consigo, se alguém puder dar uma luz! Desde já obrigado!

2 Respostas

S

Veja essa consulta aqui.

Select COUNT(*) as total, (TIMESTAMPDIFF(YEAR,
c.nascimento, NOW()) ) as idade FROM tb_pessoas HAVING idade >= 29 and idade
<= 33 AND em_id =:r

fabiomarcilio

Agora esta dando erro no em_id creio que devido a condição HAVING, nessa consulta acima esqueci de colocar o “c” após o tb_pessoas que serve como alias da tabela.

o mais próximo que cheguei é essa abaixo, mas também esta dando erro.

result := dbl_consulta.KeyValue;

qr_consulta.Close;

qr_consulta.SQL.Clear;

qr_consulta.SQL.Add(Select COUNT(*) as total FROM tb_pessoas where (SELECT TIMESTAMPDIFF(YEAR, p.ps_idade, CURDATE()) as idade FROM tb_pessoas p) idade >= 29 and idade <= 33 AND em_id =:r’ );

qr_consulta.Params.ParamByName(‘r’).AsInteger := result ;

qr_consulta.Open();

lbl_total29a33.Caption := qr_consulta.FieldByName(‘total’).Text;
Criado 28 de maio de 2016
Ultima resposta 31 de mai. de 2016
Respostas 2
Participantes 2